101

empty()和中的remove()方法有什么区别jQuery,当我们调用这些方法中的任何一个时,正在创建的对象将被销毁并释放内存?

4

3 回答 3

162
  • empty()将清空其内容的选择,但保留选择本身。
  • remove()将清空其内容的选择删除选择本身。

考虑:

<div>
    <p><strong>foo</strong></p>
</div>

$('p').empty();  // --> "<div><p></p></div>"

// whereas,
$('p').remove(); // --> "<div></div>"

它们都删除了 DOM 对象,并且应该释放它们占用的内存,是的。


以下是文档链接,其中还包含示例:

于 2010-06-22T06:15:37.490 回答
55

该文档很好地解释了它。它还包含示例:

前:

<div class="container">
  <div class="hello">Hello</div>
  <div class="goodbye">Goodbye</div>
</div>

。消除():

$('.hello').remove();

后:

<div class="container">
  <div class="goodbye">Goodbye</div>
</div>

前:

<div class="container">
  <div class="hello">Hello</div>
  <div class="goodbye">Goodbye</div>
</div>

。空的():

$('.hello').empty();

后:

<div class="container">
  <div class="hello"></div>
  <div class="goodbye">Goodbye</div>
</div>

就内存而言,一旦从 DOM 中删除一个元素并且不再有对它的引用,垃圾收集器就会在它运行时回收内存。

于 2010-06-22T06:14:55.090 回答
2

$("body").empty()-- 它'删除了 body 标签内的 HTML DOM 元素-

当您声明时 $("body").remove() -它会删除整个 HTML DOM 以及 body TAG 。

于 2013-08-03T05:18:55.340 回答