基于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 相关文章推荐
jQuery实现菜单栏导航效果
Aug 15 jQuery
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
jQuery完成表单验证的实例代码(纯代码)
Sep 30 jQuery
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 jQuery
jQuery插件jsonview展示json数据
May 26 jQuery
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 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中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
js实现图片360度旋转
2017/01/22 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
详解Vite的新体验
2021/02/22 Javascript
python更新列表的方法
2015/07/28 Python
python对json的相关操作实例详解
2017/01/04 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
C语言中break与continue的区别
2012/07/12 面试题
大学生入党思想汇报
2014/01/14 职场文书
京剧自荐信
2014/01/26 职场文书
个人求职信范文
2014/05/24 职场文书
诚信高考倡议书
2019/06/24 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers