基于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实现的背景颜色渐变动画效果示例
Mar 24 jQuery
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
jquery 一键复制到剪切板的实例
Sep 20 jQuery
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
jQuery实现表单动态添加数据并提交的方法
Jul 19 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
9种方法优化jQuery代码详解
Feb 04 jQuery
jquery插件实现悬浮的菜单
Apr 24 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
浅谈django 重载str 方法
2020/05/19 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
公务员培训自我鉴定
2013/09/19 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
光盘行动倡议书
2014/02/02 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
小学语文教研活动总结
2014/07/01 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android