我尝试提供预定义的Object Grab 以便稍后克隆它,并使用更多功能填充克隆。我面临的问题是,我可以克隆对象,但之后只有其中一个附加到DOM。
到目前为止,“守则”是:
var foo = jQuery.extend({}, Grab);
var bar = jQuery.extend({}, Grab);
$('body').append(foo);
$('body').append(bar);
我使用 jQuery.extend(),因为我需要使用克隆的Grab的 .daggable 功能。
任何建议都非常感谢!
答案 0 :(得分:5)
如果Grab
是一个元素,您通常应该使用.clone(true, true)
来复制它,而不是$.extend()
true
参数将使其成为原始对象的深层副本。
但是,这可能无法正确复制可拖动设置。仅仅因为克隆了对象,就不能保证所有的状态都被复制了。特别是如果任何可拖动状态存储在词法范围的私有变量中,它将无法工作。
同样,.draggable
函数第一次添加到元素时所执行的任何其他设置也不会完成。
恕我直言,您最好的选择是使用.clone(false)
制作浅色副本,然后在副本上调用.draggable
,然后重新附加其事件处理程序。