基于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插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
jQuery自定义图片上传插件实例代码
Apr 04 jQuery
jQuery zTree树插件动态加载实例代码
May 11 jQuery
Angular2使用jQuery的方法教程
May 28 jQuery
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
jquery实现的分页显示功能示例
Aug 23 jQuery
基于JQuery实现页面定时弹出广告
May 08 jQuery
JQuery基于FormData异步提交数据文件
Sep 01 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
15种PHP Encoder的比较
2007/04/17 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP的自定义模板引擎
2017/03/24 PHP
Symfony查询方法实例小结
2017/06/28 PHP
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
Python常用小技巧总结
2015/06/01 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
新闻专业个人求职信
2013/12/19 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
婚宴邀请函
2015/01/30 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
Python实现天气查询软件
2021/06/07 Python
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Nginx反向代理、重定向
2022/04/13 Servers