Jeremy - DragDrop Test !(function($)

{

$.extend({//获取鼠标当前坐标mouseCoords:function(ev){if(ev.pageX||ev.pageY){return{x:ev.pageX, y:ev.pageY};}return{

x:ev.clientX+document.body.scrollLeft-document.body.clientLeft,

y:ev.clientY+document.body.scrollTop-document.body.clientTop

};

},//获取样式值getStyle:function(obj,styleName)

{returnobj.currentStyle?obj.currentStyle[styleName] : document.defaultView.getComputedStyle(obj,null)[styleName];//return obj.currentStyle ? obj.currentStyle[styleName] : document.defaultView.getComputedStyle(obj,null).getPropertyValue(styleName);}

});//元素拖拽插件$.fn.dragDrop=function(options)

{varopts=$.extend({},$.fn.dragDrop.defaults,options);returnthis.each(function(){//是否正在拖动varbDraging=false;//移动的元素varmoveEle=$(this);//点击哪个元素,以触发移动。//该元素需要是被移动元素的子元素(比如标题等)varfocuEle=opts.focuEle?$(opts.focuEle,moveEle) : moveEle ;if(!focuEle||focuEle.length<=0)

{

alert('focuEle is not found! the element must be a child of'+this.id);returnfalse;

}//initDiffX|Y : 初始时,鼠标与被移动元素原点的距离//moveX|Y : 移动时,被移动元素定位位置 (新鼠标位置与initDiffX|Y的差值)//如果定义了移动中的回调函数,该对象将以参数传入回调函数。vardragParams={initDiffX:'',initDiffY:'',moveX:'',moveY:''};//被移动元素,需要设置定位样式,否则拖拽效果将无效。moveEle.css({'position':'absolute','left':'0','top':'0'});//点击时,记录鼠标位置//DOM写法: getElementById('***').οnmοusedοwn= function(event);focuEle.bind('mousedown',function(e){//标记开始移动bDraging=true;//改变鼠标形状moveEle.css({'cursor':'move'});//捕获事件。(该用法,还有个好处,就是防止移动太快导致鼠标跑出被移动元素之外)if(moveEle.get(0).setCapture)

{

moveEle.get(0).setCapture();

}//(实际上是鼠标当前位置相对于被移动元素原点的距离)//DOM写法:(ev.clientX + document.body.scrollLeft - document.body.clientLeft) - document.getElementById('***').style.left;dragParams.initDiffX=$.mouseCoords(e).x-moveEle.position().left;

dragParams.initDiffY=$.mouseCoords(e).y-moveEle.position().top;

});//移动过程focuEle.bind('mousemove',function(e){if(bDraging)

{//被移动元素的新位置,实际上鼠标当前位置与原位置之差//实际上,被移动元素的新位置,也可以直接是鼠标位置,这也能体现拖拽,但是元素的位置就不会精确。dragParams.moveX=$.mouseCoords(e).x-dragParams.initDiffX;

dragParams.moveY=$.mouseCoords(e).y-dragParams.initDiffY;//是否限定在某个区域中移动.//fixarea格式: [x轴最小值,x轴最大值,y轴最小值,y轴最大值]if(opts.fixarea)

{if(dragParams.moveX

{

dragParams.moveX=opts.fixarea[0]

}if(dragParams.moveX>opts.fixarea[1])

{

dragParams.moveX=opts.fixarea[1]

}if(dragParams.moveY

{

dragParams.moveY=opts.fixarea[2]

}if(dragParams.moveY>opts.fixarea[3])

{

dragParams.moveY=opts.fixarea[3]

}

}//移动方向:可以是不限定、垂直、水平。if(opts.dragDirection=='all')

{//DOM写法: document.getElementById('***').style.left = '***px';moveEle.css({'left':dragParams.moveX,'top':dragParams.moveY});

}elseif(opts.dragDirection=='vertical')

{

moveEle.css({'top':dragParams.moveY});

}elseif(opts.dragDirection=='horizontal')

{

moveEle.css({'left':dragParams.moveX});

}//如果有回调if(opts.callback)

{//将dragParams作为参数传递opts.callback.call(opts.callback,dragParams);

}

}

});//鼠标弹起时,标记为取消移动focuEle.bind('mouseup',function(e){

bDraging=false;

moveEle.css({'cursor':'default'});if(moveEle.get(0).releaseCapture)

{

moveEle.get(0).releaseCapture();

}

});

});

};//默认配置$.fn.dragDrop.defaults={

focuEle:null,//点击哪个元素开始拖动,可为空。不为空时,需要为被拖动元素的子元素。callback:null,//拖动时触发的回调。dragDirection:'all',//拖动方向:['all','vertical','horizontal']fixarea:null//限制在哪个区域拖动,以数组形式提供[minX,maxX,minY,maxY]};

})(jQuery);//test$(function(){//限定区域,有回调函数。$('#dragDiv').dragDrop({fixarea:[0,$('#dragContainer').width()-50,0,$('#dragContainer').height()-50],callback:function(params){

$('#span1').text('X:'+params.moveX+'Y:'+params.moveY);

}});//默认设置$('#dragDiv1').dragDrop();

});

java se拖动插件_JQuery之拖拽插件相关推荐

  1. java se拖动插件_JQuery之拖拽插件实现代码

    而很多页面效果都要用到这些位置.不得已,得练练,得记记. 下面就来说说这个基于 JQuery的简易拖拽插件吧. 按惯例,先说说拖拽的原理,以及搞这么一个东东的步骤: 那什么是拖拽呢? 看名字就知道了: ...

  2. java实现拖动框排序_拖拽排序后端设计与实现

    背景 最近在做课程后台开发时,遇到一个很有意思的问题.问题是这样的,有多节课程,运营人员可以根据需要调整课程的先后顺序,从而更改课程的展示顺序. 接到这个需求,立刻就想到了以前做首页banner轮播图 ...

  3. sortable 拖拽时互换目标的位置_双端通用型JS拖拽插件的封装与应用

    最近工作中遇到一个需求,需要将一个元素从某位置拖动到另一固定位置后执行某一交互行为,具体效果如下: 这个看似简单的需求,然而实现起来却并不那么顺利.我首先想到的是如何通过哪个现有的插件来快速解决这个问 ...

  4. 【组件】前端js拖拽插件 VUE

    [组件]前端js拖拽插件 VUE Vue Draggable - Vue 拖拽组件王者 Vue drag resize - 轻量级,无依赖,可缩放 Vue smooth dnd - 简单动效,上下拖拽 ...

  5. vue3TS+Jsplumb+vuedraggable拖拽插件使用记录

    安装拖拽插件 vue3需下载-@next此版本,否则会出现错误 npm i -S vuedraggable@next npm install sortablejs --save //拖拽组件依赖sor ...

  6. js 拖拽生成html,js拖拽插件 js 拖拽控件生成自定义表单 怎么实现

    想请教一个js的问题,拖拽控件 js 拖拽控件生成自定义表单 怎么实现 说说步骤吧 监听mousedown事件 - 获取鼠标点击元素,判断是否可拖拽 - 设置flag做标记 - 建一个tempDOM, ...

  7. 拖拽插件jquery.dad.js

    带删除功能: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  8. html 拖放插件,DAD – jQuery拖拽/拖放插件

    DAD – jQuery拖拽/拖放插件 分类:代码 日期:2016-08-02 点击(37,745) 下载(1) 来源:未知 收藏 简介 DAD 是一款基于 jQuery 的拖拽/拖放插件,它支持常见 ...

  9. jquery 磁铁模式控件_利用JQuery拖拽插件实现拖拽效果

    asp教程x.cs" inherits="jquerydrag._default" %> $(document).ready(function() { //拖拽方法 ...

最新文章

  1. java常见_Java 常用类
  2. Java Socket实战之六 使用NIO包实现Socket通信
  3. 数组去重实现的方式(越多越好)
  4. Java 采用MD5加密解密
  5. 无法安装网络计算机加密,非系统分区使用BitLocker加密导致软件无法安装的解决方法...
  6. OpenSUSE安装配置TeXLive2015.iso、前端软件Kile、Lyx、TeXstudio及TeX的更新管理界面的使用
  7. babylon101| 09. Intersect Collisions - mesh(网格交叉碰撞)
  8. 3.Omni-USDT关于支付手续费的UTXO顺序问题研究
  9. Windows蓝屏代码含义速查
  10. 计算机程序专利实用新型,涉及计算机程序的实用新型专利保护的思考
  11. 1.输入一个字符,如果是大写字母则转换为小写字母,如果是小写字母则转换为大写
  12. word操作之docx转doc出现公式变图片问题的解决方案
  13. 苹果连接电脑 计算机不显示硬盘,解决方法:Mac Mac计算机无法识别的硬盘解决方案...
  14. Linux 在线时间校准
  15. 完美解决 ListView偶尔爆出的异常:java.lang.IllegalStateException
  16. 华为19级大佬10年心血终成百页负载均衡高并发网关设计实战文档
  17. 深度学习实战6-卷积神经网络(Pytorch)+聚类分析实现空气质量与天气预测
  18. matlab计算单模光纤耦合效率的积分,空间光单模光纤耦合效率因素分析.pdf
  19. PMBOK第六版思维导图-更新中
  20. ai人工智能开发_如何以及为什么将AI整合到Web开发中

热门文章

  1. 2021 测试工作年终总结
  2. popup弹出html页面,Popup弹出框绑定添加数据事件(步奏详解)
  3. 剑指offer面试题[26]-复杂链表的复制
  4. linux搭建博客-day 7安装Nginx
  5. bigdecimal divide四舍五入_BigDecimal 四则运算
  6. mysql备份脚本 shell_MySQL数据库备份Shell脚本
  7. flask框架_Flask框架的入门:Hello world
  8. centos7.4装mysql_CentOS7.4用yum安装并配置MySQL5.7
  9. use IE7 agent on safari 13
  10. coupled quasi-harmonic bases