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 相关文章推荐
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
jQuery插件开发基础简单介绍
Jan 07 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
Dec 25 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
Jul 27 Javascript
在Vue中使用echarts的方法
Feb 05 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
深入理解令牌认证机制(token)
Aug 22 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 Javascript
vue - props 声明数组和对象操作
Jul 30 Javascript
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
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
ThinkPHP中where()使用方法详解
2016/04/19 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
Node 代理访问的实现
2019/09/19 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
初学Python实用技巧两则
2014/08/29 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
彪马美国官网:PUMA美国
2017/03/09 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
自我评价如何写好?
2014/01/05 职场文书
车辆安全检查制度
2014/01/12 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
技术经济专业求职信
2014/09/03 职场文书
出纳岗位职责
2015/01/31 职场文书
仓库保管员岗位职责
2015/02/09 职场文书