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(); } });