JQuery UI Draggable – 如果参数传递给clone(),则返回clone()的Helper函数仅克隆一次

我正在克隆元素,因为它们是使用JQuery的clone()方法从JQuery UI Draggable列表中拖出来的。 查看clone()文档 ,我看到我可以通过将一个或两个布尔参数(true,true)传递给clone()方法来克隆已绑定到这些元素的事件。

通过这些论点,事情变得奇怪了。 如果我只是使用如下所示的clone() ,那么事情就会按预期工作。

 $(".draggable").draggable({ connectToSortable: ".sortable", helper: function(e) { return $(this).clone(); } }); 

在上面的示例中,我获得了无限的克隆,但是我的事件与克隆的元素相关联也没有被克隆。 那么,当然,我想为这个clone()方法添加一个或两个参数,这样我也可以克隆事件!

 $(".draggable").draggable({ connectToSortable: ".sortable", helper: function(e) { return $(this).clone(true); } }); 

但这使得事情只能克隆一次。 有关示例,请参阅下面的小提琴!

这是clone(true)的小提琴,它只克隆一次: http : //jsfiddle.net/og937wy7/9/

这里有一个clone()的小提琴,它克隆了很多次。 http://jsfiddle.net/og937wy7/10/

我相信你在helper选项中误用了"clone" – 你不能将方法指定为字符串,string只是jQueryUI如何处理拖动元素的标识符。 您可以提供方法(可调用)或字符串,如文档中所示 。

如果将helper选项设置为"clone"而不是"clone(true, true)" ,则会复制拖动的元素(“拖动”时),正如我在小提琴中看到的那样,事件也附加到它(因为你正确绑定事件)。

在你的小提琴中尝试这个:

 $(".sortable").sortable({ }); $(".draggable").draggable({ connectToSortable: ".sortable", helper: "clone" }); 

如果我明白你的意思,你想多次制作元素克隆。 只是从clone中删除参数(true,true)就可以了:

 $(".sortable").sortable({ }); $(".draggable").draggable({ connectToSortable: ".sortable", helper: function(e) { return $(this).clone(); } });