我正在克隆元素,因为它们是使用JQuery的clone()
方法从JQuery UI Draggable列表中拖出来的。查看clone()
documentation,我看到我可以通过将一个或两个布尔参数(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/
答案 0 :(得分:1)
如果我明白你的意思,你想多次制作元素克隆。只是从clone中删除参数(true,true)就可以了:
$(".sortable").sortable({
});
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone();
}
});
答案 1 :(得分:1)
我相信你在helper选项中误用了"clone"
- 你不能将方法指定为字符串,string只是jQueryUI处理拖动元素的标识符。您可以将方法(可调用)或字符串赋予in the docs。
如果您将帮助程序选项设置为"clone"
而不是"clone(true, true)"
,则会复制拖动的元素(“拖动”时),正如我在小提琴中看到的那样,事件也附加到它(因为你正确绑定事件)。
在你的小提琴中试试这个:
$(".sortable").sortable({
});
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: "clone"
});