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

时间:2015-10-13 17:13:41

标签: jquery jquery-ui clone draggable jquery-ui-sortable

我正在克隆元素,因为它们是使用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/

2 个答案:

答案 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"
});