我想知道是否有必要手动删除已使用jQuery的detach()
函数分离的元素(并且所有对它的引用都已null
')。
这是我尝试过的JavaScript。
例如:
elem = $(".test").detach();
elem = null;
元素是否完全消失,例如$(".test").remove();
还是需要elem.remove()
?
编辑:包括我对问题的评论:
我正在分离多个元素。其中一些被重用(重新注入DOM),但其他需要在分离后永久删除。
答案 0 :(得分:1)
你不应该担心这一点。如果没有对已分离元素的引用,垃圾收集器将清理它。
虽然,你最好还是打电话给remove()
。 detach()
专门用于您想要保留的元素(它维护与该元素关联的所有jQuery特定数据)。两者最终都会在实际的DOM元素上调用elem.parent.removeChild
。据我所知,没有办法手动删除或销毁它,但无论如何这都是垃圾收集器的工作。
答案 1 :(得分:1)
是否有必要手动删除已使用jQuery的detach()函数分离的元素(并且所有对它的引用都为null)。
您无法“删除”元素。当没有引用时,垃圾收集器将自动收集它。如果你已将它拆开,它将毫无问题地从内存中擦除。
但是,这不是detach
和remove
之间的区别。当简单地分离它时,jQuery不存储在元素上而是存储在其内部缓存中的一些数据将被泄露。您需要在元素上明确调用[internal!] cleanData
method来修复它 - 但您只需调用.remove()
。
答案 2 :(得分:0)
直接来自jQuery documentation:
.detach()方法与.remove()相同,但.detach()除外 保持所有jQuery数据与删除的元素相关联。这个 当要删除的元素要重新插入时,方法很有用 以后的DOM。
和.remove()
method takes elements out of the DOM.
所以你应该受到保护。