【发布时间】:2009-08-19 18:13:06
【问题描述】:
使用 Google 托管的最新 jQuery/UI。我有以下标记:
<ul id="tree">
<li><a href="1/">One</a></li>
<li><a href="2/">Two</a></li>
</ul>
还有下面的javascript:
$(document).ready(function(){
// Droppable callbacks
function dragOver(overEvent, ui_object) {
$(this).mousemove(function(moveEvent){
console.log("moved over", this);
});
}
function drop_deactivate() {
$(this).unbind();
}
function drag_out() {
$(this).unbind();
}
// Actual dragging
$("#treeContainer li").draggable({
revert: true,
revertDuration: 0
});
// Actuall dropping
$("a").droppable({
tolerance: "pointer",
over: dragOver,
deactivate: drop_deactivate,
out: drag_out
});
});
如果我将第一个li 向下拖动到第二个上方,mousemove 函数就会触发(并且 firebug 会记录输出)。但是,如果我将第二个 li 向上拖动到第一个上方,则 mousemove 函数不会触发。您可以在http://jsbin.com/ivala 现场观看。是否有一个原因?我应该以其他方式捕获 mousemove 事件吗?
编辑:似乎认为 mousemove() 事件没有绑定到比当前被拖动的元素更早的元素(应该在鼠标悬停时绑定)。
【问题讨论】:
-
我打开了链接,有时将第二个 li 向上拖到第一个 firebug 上会记录输出。但是将第一个向上拖到第二个上要容易得多。
-
我也注意到了。这不是正常的行为;非常令人费解。
-
你想通过添加 mousemove 事件来完成什么?
-
我想知道鼠标光标相对于元素的位置,上/中/下。
标签: jquery jquery-ui draggable droppable drag-and-drop