jQuery中的clone(true) + remove()和detach()有什么区别?

4

这个词汇的使用是否

e = elem.clone(true);
elem.remove();

与...相同

e = elem.detach();

如果我稍后添加它,使用

标签:
e.appendTo($("#someDiv"));

在jQuery 1.4中,clone(true)方法是否能够像detach()方法一样保留所有内容?

2个回答

2

同样但不同:如果您只克隆节点而没有将其分配给变量,则会丢失所复制节点的引用,因此无法获得其事件处理程序和其他数据的机会(这并不完全正确,但很麻烦)。

编辑
是的,如果保留对克隆元素的引用,您将拥有一个精确的副本(请注意true参数),稍后可以将其附加到DOM中。


更新了问题以更好地反映我想要做的事情。不是要失去参考。想知道参考在两种情况下是否包含相同的数据。 - Ron Harlev

0

我读到的方式,这些方法是等效的:

根据detach()文档

.detach() 方法与 .remove() 方法相同,唯一不同的是 .detach() 会保留所有与移除元素相关的 jQuery 数据。当需要在稍后的时间将被移除的元素重新插入到 DOM 中时,该方法非常有用。

根据clone()文档

.clone( [ withDataAndEvents ] )

withDataAndEvents 是一个布尔值,指示是否连同元素一起复制事件处理程序。从 jQuery 1.4 开始,也会复制元素数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接