博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【前端 5】拖拽
阅读量:5088 次
发布时间:2019-06-13

本文共 1599 字,大约阅读时间需要 5 分钟。

简述:实现拖拽,关键的地方:鼠标抬起(mouse-up)事件、鼠标落地(mouse-down)事件、对象的拖拽事件。那么在这个过程中,需要注意的点是:获取鼠标焦点在可视窗口的具体位置(x,y),以及各个浏览器的兼容,鼠标的可拖拽范围控制等!

一、实现要点

1.1,让指定对象可拖拽

$("div[id^='chooseCourse']").draggable();
本行代码表示,获取所有div的ID前缀是chooseCourse的对象,并设置其属性为可拖拽。draggable方法里面有很多的属性,包括是否可复制、拖动范围控制、透明度等等,这里因为实际情况,并没有配置任何属性!

1.2,(mouse-down)克隆当前对象,供下次拖拽

 function DragObj(){	 var flag=0	 var x=0;	 var y=0 } var dEvt=new DragObj(); function down(obj,cloneId){	 dEvt.flag=1;	 dEvt.x=obj.offsetLeft;	 dEvt.y=obj.offsetTop;	 //复制一个当前控件,并且放到获取的位置上	 var sourceNode=document.getElementById(cloneId); 	var i="a";	var cloneNode=sourceNode.cloneNode(true);	var newCloneId=cloneId+i;	cloneNode.setAttribute("id",newCloneId);	sourceNode.parentNode.appendChild(cloneNode);		$("div[id='"+cloneNode.id+"']").draggable();	 }

1.3,(mouse-up)执行鼠标抬起时的事件

在这个步骤中,需要控制拖拽范围和获取鼠标抬起时的位置:
 function up(obj,event){	 //获取当前的位置	 //获取每一行的位置,获取每一列的位置object.offsetLeft	 var txt=obj.innerText;	 var id=obj.id;	 obj.hidden=true;	 var x=event.pageX;	 var y=event.pageY;	 var getNode=document.elementFromPoint(x,y);	 	//拖动有效范围的最左边(执行弹框)	 var X1 = $('#Firstone').offset().top;	 var Y1= $('#Firstone').offset().left;	//拖动有效范围的最右边(执行弹框)	 var X2 = $('#Seventhfive').offset().top;	 var Y2= $('#Seventhfive').offset().left;			 if(x
Y2){ return; } if(y
X2){ return; }}

1.4,代码调用

onMouseDown=down(this,id) οnmοuseup=up(this,event)

二、总结

在这个过程中要点,除了上面的之外,对于准确获取到指定一个、多个对象也是一个比较关键的地方(就跟数据库查询玩儿模糊匹配似的,唉)。在这个过程中,发现框架有些封装好的,然后自己并不知道。有了框架之后,自己又完全依赖框架,是个麻烦事!
利用框架或者语言本身提供的方法,可以大大的缩减代码,提升代码质量!

转载于:https://www.cnblogs.com/hhx626/p/6010303.html

你可能感兴趣的文章
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>