使用jQuery 1.2.x和jQuery UI 1.5.x,可以通过以下方式手动触发拖动:
jQuery("#myDiv").mousedown(function(ev) {
target = jQuery(ev.target);
if (target.hasClass("drag-me")) {
target.draggable({
helper: "clone",
start: function()
{
console.log("drag start");
},
stop: function()
{
jQuery(this).draggable("destroy");
}
}).trigger("mousedown.draggable", [ev]);
} });
它适用于以下HTML:
<div id="myDiv">
<div class="drag-me"></div>
<div class="drag-me"></div>
<div class="drag-me"></div>
<div class="drag-me"></div>
<div class="drag-me"></div>
<div class="drag-me"></div>
<div class="drag-me"></div>
</div>
这是一种方便的方法,可以将拖动应用于容器内动态更改其子元素的情况。我喜欢称之为“拖动委托”。
然而,在jQuery 1.3.x和jQuery 1.6+发布后,上面的脚本停止工作。使用jQuery 1.3.2和jQuery UI 1.7.1会返回一个错误“too much recursion”。
如何手动触发拖动?有什么建议吗?