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 禁用浏览器的后退功能的简单方法
Dec 10 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
jquery点击缩略图切换视频播放特效代码分享
Sep 15 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
bootstrap手风琴折叠示例代码分享
May 22 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
JS自定义函数实现时间戳转换成date的方法示例
Aug 27 Javascript
原生JS写Ajax的请求函数功能
Dec 22 Javascript
vue中动态添加class类名的方法
Sep 05 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
python实现udp数据报传输的方法
2014/09/26 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
python负载均衡的简单实现方法
2018/02/04 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
python实现大转盘抽奖效果
2019/01/22 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
个人委托书如何写
2014/09/25 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
安全第一课观后感
2015/06/18 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android