原生javascript相当于jQuery.draggable()
Native javascript equivalent to jQuery.draggable()
是否有一个本地javascript代码相当于jQuery的可拖拽?我不需要所有的功能,但是
- 能够从句柄中拖动模态窗口。
- 在开始和结束事件,因为我需要做一个叠加层,同时拖动以防止鼠标位于模态窗口内的iframe上。
- 文件中只有一个可拖动的项目。
使用事件dragstart
和dragend
。将模态的位置与鼠标的x和y坐标相关联
有HTML5和api,但因为没有人喜欢它的任何方式和旧的浏览器都不支持它,我想说你找到了一个很好的解决方案,jQuery
虽然这个问题说的是原生JavaScript,但考虑到@Moe Sweet评论说jQuery 是启用的,我将做出回应。
拖放是特定的事件链。这并不难,但可能很有挑战性。
简单地说,拖放是以下步骤/事件:
- 鼠标按下,可以拖动
- 鼠标移动,继续拖动
- 鼠标停止,不能拖动
简单的解决方案是使用这些事件:mousedown
, mousemove
和mouseup
$(anElement).mousedown(foodown);
function foodown(){
$(window).mousemove(foomove).mouseup(fooup);
//stuff
}
function foomove(){
//stuff
}
function fooup(){
//stuff
$(window).unbind('mousemove', foomove).unbind('mouseup', fooup);
}
需要注意的一点是,mousedown
之后的事件需要绑定到window
,以便在鼠标被按住时离开原始元素时捕获它们。
代码的"东西"部分是你需要检查元素的屏幕坐标与鼠标的屏幕坐标并适当移动东西的地方。移动只在mousemove
事件期间是真正必要的,因为鼠标不会在mouseup
或mousedown
事件中移动。
有一个类似的问题,我张贴了我的jQuery代码。dragondrop插件。
使用看起来比jQuery更干净的HTML5方法:
<div draggable="true"
ondragstart="event.dataTransfer.setData('text/plain', '12345')">
drag me
</div>
<div ondragover="return false;"
ondrop="this.innerHTML=event.dataTransfer.getData('text/plain')">
drop on me
</div>
相关文章:
- jquery UI draggable:UI.children不是一个函数
- 通过DRAGGABLE将一个DIV移动到另一个DIF下?(CSS,JQuery)
- Jquery Draggable-在浏览器刷新时保持位置
- jQuery Draggable:内存泄漏
- jQuery UI draggable:绑定到mousemove事件中的对象
- 将jQuery draggable()元素移动到新的父元素
- jquery-ui-rails的draggable和dropable函数不起作用
- 使用jquery draggable UI使项目可拖动
- jquery ui draggable中的奇怪偏移量
- 使jQuery Draggable在其他行中可见
- jquery draggable和resizable在动态生成的元素中不能一起工作
- jquery+draggable/my的输入在删除后不起作用
- Marionette应用程序上的jquery-ui.draggable和jqQuery事件出现问题
- jquery draggable droppable with sortable
- JQuery Draggable 中的三个 JS ObitControls
- Jquery Draggable - 如何使拖动的元素以像素增量对齐
- 在键控后禁用 jQuery Draggable
- 逐渐降低不透明度,因为元素是通过jQuery UI .draggable()拖动的
- jquery ui error for ui.draggable("destroy")
- TinyMce4 dom add element with draggable (jquery)