基于jQuery拖拽事件的封装


Posted in jQuery onNovember 29, 2020

本文实例为大家分享了基于jQuery封装的拖拽事件,供大家参考,具体内容如下

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <script src="jquery-3.4.1.min.js"></script>
  <script src="Drag.js"></script>
  <title>Document</title>
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    .box{
      height: 200px;
      width: 200px;
      background-color: red;
      position: absolute;
      /* 让文字无法被选中 */
      user-select:none;
    }
  </style>
</head>
<body>
  <div class="box"></div>box</div>
  <script>
    $('.box').Drag();//直接调用Drag()方法就可以了
  </script>
</body>
</html>

封装的jQuery拖拽事件:

;(function($) {
  $.fn.extend({
    Drag(){
      //把this存起来,始终指向操作的元素
      _this = this;
      this.on('mousedown',function (e) {
        //盒子距离document的距离
        var positionDiv = $(this).offset();
        //鼠标点击box距离box左边的距离
        var distenceX = e.pageX - positionDiv.left;
        //鼠标点击box距离box上边的距离
        var distenceY = e.pageY - positionDiv.top;
        $(document).mousemove(function(e) {
          //盒子的x轴
          var x = e.pageX - distenceX;
          //盒子的y轴
          var y = e.pageY - distenceY;
          //如果盒子的x轴小于了0就让他等于0(盒子的左边界值)
          if (x < 0) {
            x = 0;
          } 
          //盒子右边界值
          if(x > $(document).width() - _this.outerWidth()){
            x = $(document).width() - _this.outerWidth();
          }
          //盒子的上边界值
          if (y < 0) {
            y = 0;
          }
          //盒子的下边界值
          if(y > $(document).height() - _this.outerHeight()){
            y = $(document).height() - _this.outerHeight();
          }
          //给盒子的上下边距赋值
          $(_this).css({
            'left': x,
            'top': y
          });
        });
        //在页面中当鼠标抬起的时候,就关闭盒子移动事件
        $(document).mouseup(function() {
          $(document).off('mousemove');
        });
      })
      //把this返回回去继续使用jqurey的链式调用
      return this
    }
  })
})(jQuery)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
使用jQuery实现动态添加小广告
Jul 11 jQuery
解决IE7中使用jQuery动态操作name问题
Aug 28 jQuery
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
jquery tmpl模板(实例讲解)
Sep 02 jQuery
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
jQuery实现动态操作table行
Nov 23 #jQuery
jQuery-App输入框实现实时搜索
Nov 19 #jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 #jQuery
JavaScript枚举选择jquery插件代码实例
Nov 17 #jQuery
如何在vue 中引入使用jquery
Nov 10 #jQuery
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 #jQuery
jQuery实现移动端扭蛋机抽奖
Nov 08 #jQuery
You might like
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python获取目录下所有文件的方法
2015/06/01 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
会计电算化专业毕业生自荐信
2013/12/20 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
新生入学欢迎词
2015/01/26 职场文书
南湾猴岛导游词
2015/02/09 职场文书
考研经验交流会策划书
2015/11/02 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
python - timeit 时间模块
2021/04/06 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers