在jQuery UI中触发鼠标拖动

Nei*_*ilC 3 javascript jquery user-interface triggers drag

使用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]);
} });
Run Code Online (Sandbox Code Playgroud)

它适用于以下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>
Run Code Online (Sandbox Code Playgroud)

这是一种将拖动应用于动态更改其子项的容器内的元素的方便方法.我喜欢称之为"拖曳代表团".

然而随着jQuery 1.3.x和jQuery 1.6+的发布,上面的脚本停止了工作.使用jQuery 1.3.2和jQuery UI 1.7.1会返回错误"太多的递归".

如何手动触发拖动?有什么建议?

小智 12

上面的答案似乎过于复杂.

$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) {
   $('.draggableObject').trigger(e);
});
Run Code Online (Sandbox Code Playgroud)