4

是使用

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

相同

e = elem.detach();

如果稍后我将其附加

e.appendTo($("#someDiv"));

在 jQuery 1.4 中?
clone(true) 方法会保留使用 detach() 的所有内容吗?

4

2 回答 2

2

相同但不同:如果您只是克隆一个节点而不将其分配给变量,您将丢失复制节点的引用,因此任何机会获得其事件处理程序和其他数据(不太正确,但它是一个 PITA)。

编辑
是的,持有对克隆元素的引用,您有一个精确的副本(但请注意真正的参数),以后可以将其附加到 DOM。

于 2010-02-16T18:34:22.997 回答
0

我阅读它的方式,这些将是等效的方法:

来自detach() 的文档

.detach() 方法与 .remove() 方法相同,不同之处在于 .detach() 保留与已删除元素关联的所有 jQuery 数据。当移除的元素稍后要重新插入到 DOM 中时,此方法很有用。

来自clone() 的文档

.clone([withDataAndEvents])

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

于 2010-02-16T18:32:11.403 回答