多次克隆对象并在jQuery中附加克隆

时间:2012-08-15 14:01:11

标签: javascript jquery

我尝试提供预定义的Object Grab 以便稍后克隆它,并使用更多功能填充克隆。我面临的问题是,我可以克隆对象,但之后只有其中一个附加到DOM。

到目前为止,“守则”是:

var foo = jQuery.extend({}, Grab);
var bar = jQuery.extend({}, Grab);

$('body').append(foo);
$('body').append(bar);

我使用 jQuery.extend(),因为我需要使用克隆的Grab的 .daggable 功能。

任何建议都非常感谢!

1 个答案:

答案 0 :(得分:5)

如果Grab是一个元素,您通常应该使用.clone(true, true)来复制它,而不是$.extend()

true参数将使其成为原始对象的深层副本。

但是,这可能无法正确复制可拖动设置。仅仅因为克隆了对象,就不能保证所有的状态都被复制了。特别是如果任何可拖动状态存储在词法范围的私有变量中,它将无法工作。

同样,.draggable函数第一次添加到元素时所执行的任何其他设置也不会完成。

恕我直言,您最好的选择是使用.clone(false)制作浅色副本,然后在副本上调用.draggable,然后重新附加其事件处理程序。