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
});
});
最初のものを 2 番目の上にドラッグするli
と、mousemove 関数が起動します (そして、firebug が出力をログに記録します)。しかし、2 番目を最初の上にドラッグするli
と、mousemove 関数は起動しません。これはライブで見ることができますhttp://jsbin.com/ivala。これには理由がありますか?他の方法で mousemove イベントをトラップする必要がありますか?
編集: mousemove() イベントは、現在ドラッグされている要素より前の要素にバインドされていないようです (マウスオーバー時にバインドする必要があります)。