jQuery实现拖拽效果插件的方法


Posted in Javascript onMarch 23, 2015

本文实例讲述了jQuery实现拖拽效果插件的方法。分享给大家供大家参考。具体如下:

下面的jQuery插件允许你通过鼠标右键点击拖动overflow的元素,这个插件可以在移动设备上运行

/**
* jQuery Drag and Scroll
*
* Copyright (c) 2012 Ryan Naddy (ryannaddy.com)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function($){
  var down = false;
  var prevX = 0;
  var prevY = 0;
  var x = 0;
  var y = 0;
  var px = 0;
  var py = 0;
  var lastPX = -1;
  var lastPY = -1;
  var $target = null;
  var $me = null;
  var $selector = "";
  var settings = {
    mouseButton: 3,
    context: false,
    selectText: false
  };
  $.fn.dragScroll = function(options){
    settings = $.extend(settings, options);
    $selector = $(this).selector;
    $(this).contextmenu(function(){
      return false;
    }).bind("mousedown touchstart", function(e){
      $me = $(this);
      e = event.touches ? event.touches[0] : e;
      $target = $(e.target);
      $target = $target.closest($selector);
      if(settings.viewPort){
        if(!settings.context){
          $me.contextmenu(function(){
            return false;
          });
        }
      }
      if(!settings.selectText){
        $me.attr('unselectable', 'on').css('user-select', 'none').on('selectstart', false);
      }
      $me = $me.closest($selector);
      if($target && $me.attr("id") != $target.attr("id")){
        return false;
      }
      if(e.which == settings.mouseButton || event.touches){
        $me.css("cursor", "move");
        down = true;
      }
      px = $me.scrollLeft();
      py = $me.scrollTop();
      x = px + e.pageX;
      y = py + e.pageY;
      prevX = x;
      prevY = y;
      return true;
    }).bind("mouseup touchend", function(e){
      $me = $(this);
      e = event.touches ? event.touches[0] : e;
      $me.css("cursor", "auto");
      down = false;
    }).bind("mousemove touchmove", function(e){
      $me = $(this);
      $me = $me.closest($selector);
      e = event.touches ? event.touches[0] : e;
      if((e.which == settings.mouseButton || event.touches) && down){
        if(event.touches){
          event.preventDefault();
        }
        if($target && $me.attr("id") != $target.attr("id")){
          return false;
        }
        $me.css("cursor", "move");
        px = $me.scrollLeft();
        py = $me.scrollTop();
        x = px + e.pageX;
        y = py + e.pageY;
        $me.scrollLeft(px + (-(x - prevX)));
        $me.scrollTop(py + (-(y - prevY)));
        prevX = x - (x - prevX);
        prevY = y - (y - prevY);
        if(lastPX == px)
          prevX = x;
        if(lastPY == py)
          prevY = y;
        lastPX = px;
        lastPY = py;
      }
      return true;
    });
    return this;
  }
})(jQuery);

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
js类的静态属性和实例属性的理解
Oct 01 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
Angularjs添加排序查询功能的实例代码
Oct 24 Javascript
解决layui弹框失效的问题
Sep 09 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 Javascript
ant design的table组件实现全选功能以及自定义分页
Nov 17 Javascript
jQuery操作表单常用控件方法小结
Mar 23 #Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 #Javascript
JavaScript中匿名函数用法实例
Mar 23 #Javascript
JavaScript创建一个object对象并操作对象属性的用法
Mar 23 #Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 #Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
Mar 23 #Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 #Javascript
You might like
再推荐十款免费的php开发工具
2015/11/09 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
python else语句在循环中的运用详解
2020/07/06 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
农村婚礼证婚词
2014/01/10 职场文书
关于运动会的稿件
2014/02/02 职场文书
毕业生自荐信格式
2014/03/07 职场文书
婚庆司仪主持词
2014/03/15 职场文书
淘宝好评语大全
2014/05/05 职场文书
小学综合实践活动总结
2014/07/07 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
走进科学观后感
2015/06/18 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书