JQuery用户界面可拖动 - 辅助函数返回的clone()只克隆一次,如果传递的参数克隆()(JQ

2019-11-04 02:54发布

我克隆的元素,因为它们拖出使用jQuery的一个jQuery UI可拖动列表clone()方法。 综观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/

Answer 1:

我相信你滥用"clone"在助手选项-你不能指定一个方法为一个字符串,字符串就是一个标识符jQueryUI的是如何处理拖动的元素。 你要么给的方法(可调用),或者一个字符串,如在文档 。

如果设置辅助选项"clone" ,而不是"clone(true, true)" ,拖动的元素会被复制(当“拖”),正如我在小提琴看到,该事件也与它(因为你绑定事件的正确)。

在你的提琴试试这个:

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


Answer 2:

如果我明白你的意思,你想使元素克隆多次。 只需去除克隆的参数(真,真)会做的伎俩:

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


文章来源: JQuery UI Draggable - Helper function which returns clone() only clones once if arguments passed to clone()