是使用
e = elem.clone(true);
elem.remove();
相同
e = elem.detach();
如果稍后我将其附加
e.appendTo($("#someDiv"));
在 jQuery 1.4 中?
clone(true) 方法会保留使用 detach() 的所有内容吗?
相同但不同:如果您只是克隆一个节点而不将其分配给变量,您将丢失复制节点的引用,因此任何机会获得其事件处理程序和其他数据(不太正确,但它是一个 PITA)。
编辑
是的,持有对克隆元素的引用,您有一个精确的副本(但请注意真正的参数),以后可以将其附加到 DOM。
我阅读它的方式,这些将是等效的方法:
来自detach() 的文档:
.detach() 方法与 .remove() 方法相同,不同之处在于 .detach() 保留与已删除元素关联的所有 jQuery 数据。当移除的元素稍后要重新插入到 DOM 中时,此方法很有用。
来自clone() 的文档:
.clone([withDataAndEvents])
withDataAndEvents 一个布尔值,指示是否应将事件处理程序与元素一起复制。从 jQuery 1.4 开始,元素数据也将被复制。