基于Jquery的可拉拽控件的实现
来源:互联网 发布:ucloud云计算工资怎样 编辑:程序博客网 时间:2024/06/09 16:02
$('.start-icon').mousedown( function (e) { var hasMove = false; var isMove = true; var that = this; var abs_x = e.clientX - parseInt($(this).css('left'))||-5; var abs_y = e.clientY - parseInt($(this).css('top')) || -5; $(document).mousemove(function (e) { if (isMove) { var obj = $(that); obj.css({ 'left': e.clientX-abs_x, 'top': e.clientY-abs_y }); } hasMove = true; } ).mouseup( function () { isMove = false; if (!hasMove) { //点击而不是移动时间的处理 } } ); } );
上面这种方法其实重复绑定了document的mouseMove事件。
下面这种方法就对上面的方法进行优化,和防止重复绑定,使用了冒泡事件,可以同时移动在#article中的具有.tool-banner的.tool-container容器的多个元素
var $g_moveObg=null,g_pointer=null;$('#article').mousedown(function (e) {var target = e.target || event.srcElement; if (target.className.indexOf('tool-banner') >= 0) { $g_moveObj = $(target).closest('.tool-container'); $(e).of g_pointer = $g_moveObj.offset(); g_pointer.left = event.clientX - g_pointer.left; g_pointer.top = event.clientY - g_pointer.top; } }).mousemove(function () { if ($g_moveObj) { $g_moveObj.css({ 'left': event.clientX - g_pointer.left, 'top':event.clientY-g_pointer.top }); } }).mouseup(function () { $g_moveObj = null; g_pointer = null; });
针对移动版,需要作出判断
//移动控件的监听 var downHandler = function (e) { var target = e.target || event.srcElement; e = event.touches && event.touches[0] || event;//非触屏版的event.clientX是对应触屏版的event.touches.clientX if (target.className.indexOf('tool-banner') >= 0) { $g_moveObj = $(target).closest('.tool-container'); g_pointer = $g_moveObj.offset(); g_pointer.left = e.clientX - g_pointer.left; g_pointer.top = e.clientY - g_pointer.top; } }, moveHandler = function (e) { if ($g_moveObj) { e = event.touches && event.touches[0] || event; $g_moveObj.css({ 'left': e.clientX - g_pointer.left, 'top': e.clientY - g_pointer.top }); } }, upHandler = function () { $g_moveObj = null; g_pointer = null; }; if ("ontouchend" in document) { //移动版 $(window).on({ 'touchstart': downHandler, 'touchmove': moveHandler, 'touchend': upHandler }); } else { //桌面版 $(window).on({ 'mousedown': downHandler, 'mousemove': moveHandler, 'mouseup': upHandler }); }
0 0
- 基于Jquery的可拉拽控件的实现
- 可拉扯的形状
- 基于jquery的日历控件
- 基于jQuery的select控件
- 基于jQuery的日期控件
- 基于JQuery 的分页控件
- jquery实现的控件
- 基于jquery组件实现的自动完成控件(asp.net服务器控件)
- 基于Jquery实现的手风琴
- 基于JQuery实现的轮播图
- 基于jQuery的日历控件【原创】
- 基于Jquery的tab选项卡控件
- 基于jquery扩展的弹层控件
- 基于Jquery的文本提示控件 poshytip
- 基于jQuery的三级联动控件
- 收集一些基于jQuery框架开发的控件/jquery插件
- 收集一些基于jQuery框架开发的控件-jquery插件
- WPF换肤之二:可拉动的窗体
- javascript 类式继承
- 急停拉绳开关优质供应
- 来了!
- 好的产品经理是什么样的?
- setInterval 和setTimeout的停止方法
- 基于Jquery的可拉拽控件的实现
- SSH中web.xml文件的配置
- 搜集过的牛X文章
- 简单区分iphone和ipad的宏定义
- android浏览器研究-loadUrl加载流程
- Linux 解压命令
- iOS:事件处理机制(二)--事件传递,Responder Chain响应链
- 光电传感器厂家
- 你们不懂的