jQuery:在detach()之后手动删除元素?

时间:2014-01-23 23:27:20

标签: javascript jquery

我想知道是否有必要手动删除已使用jQuery的detach()函数分离的元素(并且所有对它的引用都已null')。

这是我尝试过的JavaScript。

例如:

elem = $(".test").detach();
elem = null;

元素是否完全消失,例如$(".test").remove();还是需要elem.remove()

编辑:包括我对问题的评论:

我正在分离多个元素。其中一些被重用(重新注入DOM),但其他需要在分离后永久删除。

3 个答案:

答案 0 :(得分:1)

你不应该担心这一点。如果没有对已分离元素的引用,垃圾收集器将清理它。

虽然,你最好还是打电话给remove()detach()专门用于您想要保留的元素(它维护与该元素关联的所有jQuery特定数据)。两者最终都会在实际的DOM元素上调用elem.parent.removeChild。据我所知,没有办法手动删除或销毁它,但无论如何这都是垃圾收集器的工作。

答案 1 :(得分:1)

  

是否有必要手动删除已使用jQuery的detach()函数分离的元素(并且所有对它的引用都为null)。

您无法“删除”元素。当没有引用时,垃圾收集器将自动收集它。如果你已将它拆开,它将毫无问题地从内存中擦除。

但是,这不是detachremove之间的区别。当简单地分离它时,jQuery不存储在元素上而是存储在其内部缓存中的一些数据将被泄露。您需要在元素上明确调用[internal!] cleanData method来修复它 - 但您只需调用.remove()

答案 2 :(得分:0)

直接来自jQuery documentation

  

.detach()方法与.remove()相同,但.detach()除外   保持所有jQuery数据与删除的元素相关联。这个   当要删除的元素要重新插入时,方法很有用   以后的DOM。

.remove()

method takes elements out of the DOM.

所以你应该受到保护。