jQuery 中的 clone(true) + remove() 与 detach()
Posted
技术标签:
【中文标题】jQuery 中的 clone(true) + remove() 与 detach()【英文标题】:clone(true) + remove() vs. detach() in jQuery 【发布时间】:2010-02-16 18:21:34 【问题描述】:是的用法
e = elem.clone(true);
elem.remove();
与
相同e = elem.detach();
如果稍后我将其附加
e.appendTo($("#someDiv"));
在 jQuery 1.4 中? clone(true) 方法会保留使用 detach() 的所有内容吗?
【问题讨论】:
【参考方案1】:相同但不同:如果您只是克隆一个节点而不将其分配给变量,您将失去复制节点的引用,因此任何机会获得其事件处理程序和其他数据(不太正确,但它是一个 PITA )。
编辑 是的,持有对克隆元素的引用,您就有了一个精确的副本(但请注意真正的参数),以后可以将其附加到 DOM。
【讨论】:
更新了问题以更好地反映我正在尝试做的事情。并不是要失去参考。想知道引用是否在两种情况下都包含相同的数据【参考方案2】:按照我的阅读方式,这些是等效的方法:
来自documentation for detach():
.detach() 方法与 .remove(),除了 .detach() 保持 所有与 删除的元素。这种方法是 当要移除元素时很有用 稍后重新插入 DOM 时间。
来自documentation for clone():
.clone( [ withDataAndEvents ] )
withDataAndEvents 一个布尔值,表示 事件处理程序是否应该 与元素一起复制。作为 jQuery 1.4 元素数据将被复制 也是。
【讨论】:
以上是关于jQuery 中的 clone(true) + remove() 与 detach()的主要内容,如果未能解决你的问题,请参考以下文章