jquery实现拖动效果


Posted in Javascript onAugust 10, 2016

因为想实现相框的拖到,找了半天的原因愣是没有找到错误,所以,只能翻看源码了 

如何实现拖动效果?

 jquery实现拖动效果

jquery实现拖动效果

jquery实现拖动效果

首先分析下拖动效果原理:
1.当鼠标在被拖动对象上按下鼠标(触发onmousedown事件,且鼠标在对象上方)
2.开始移动鼠标(触发onmousemove事件)
3.移动时更显对象的top和left值
4.鼠标放开停止拖动(触发onmouseup事件)
注意:拖动的对象必须是定位对象(即设置了position:absolute或 relative)。 

也就是说拖动事件=onmousedown事件+onmousemove事件 

整个过程就是处理这三个事件来模拟drag事件
现在看看我实现的源代码: 

html代码: 

<div class="drag">
 <p class="title">标题(点击标题拖动)</p>
</div>

<div class="drag1">
 <p class="title">标题</p>
 点击我移动
</div>
 

jquery插件代码:

(function($){
 $.fn.drag=function(options){

 //默认配置
 var defaults = {
 handler:false,
 opacity:0.5
 };

 // 覆盖默认配置
 var opts = $.extend(defaults, options);

 this.each(function(){

 //初始标记变量
 var isMove=false,
 //handler如果没有设置任何值,则默认为移动对象本身,否则为所设置的handler值
 handler=opts.handler?$(this).find(opts.handler):$(this),
 _this=$(this), //移动的对象
 dx,dy;

 $(document)
 //移动鼠标,改变对象位置
 .mousemove(function(event){
 // console.log(isMove);
 if(isMove){

 //获得鼠标移动后位置
 var eX=event.pageX,eY=event.pageY;

 //更新对象坐标
 _this.css({'left':eX-dx,'top':eY-dy});

  }
 })

 //当放开鼠标,停止拖动
 .mouseup(function(){
 isMove=false;
 _this.fadeTo('fast', 1);
 //console.log(isMove);
  });

 handler
 //当按下鼠标,设置标记变量isMouseDown为true
 .mousedown(function(event){

 //判断最后触发事件的对象是否是handler
 if($(event.target).is(handler)){

 isMove=true;
 $(this).css('cursor','move');

 //console.log(isMove);
 _this.fadeTo('fast', opts.opacity);

 //鼠标相对于移动对象的坐标
 dx=event.pageX-parseInt(_this.css("left"));
 dy=event.pageY-parseInt(_this.css("top"));

  }
   });
  });
 };
 })(jQuery);
 

调用方法:

$(function(){

 //拖动标题
 $(".drag").drag({
handler:$('.title'),//操作拖动的对象,此对象必须是移动对象的子元素
opacity:0.7 //设置拖动时透明度
});

 //拖动主体对象
 $(".drag1").drag({
 opacity:0.7
 });

 });

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

Javascript 相关文章推荐
Javascript读取cookie函数代码
Oct 16 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
Oct 24 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
判断复选框是否被选中的两种方法
Jun 04 Javascript
Javascript实现鼠标右键特色菜单
Aug 04 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
javascript实现很浪漫的气泡冒出特效
Sep 05 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
jquery滚动条插件slimScroll使用方法
Feb 09 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
JS弹出新窗口被拦截的解决方法
Aug 09 #Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
Aug 09 #Javascript
JS获取一个未知DIV高度的方法
Aug 09 #Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 #Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 #Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 #Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
Aug 09 #Javascript
You might like
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
phpwind放自动注册方法
2006/12/02 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
JSONP之我见
2015/03/24 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
python机器学习实战之K均值聚类
2017/12/20 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
Python 在局部变量域中执行代码
2020/08/07 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
关于圣诞节的广播稿
2014/01/26 职场文书
自荐信的格式
2014/03/10 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
安全环保演讲稿
2014/08/28 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
首席执行官观后感
2015/06/03 职场文书
电影圆明园观后感
2015/06/03 职场文书
初中班主任培训心得体会
2016/01/07 职场文书