jQuery empty()vs remove()

时间:2010-06-22 06:11:25

标签: javascript jquery dom-manipulation

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

3 个答案:

答案 0 :(得分:154)

  • empty()将删除所有内容。
  • remove()将删除选择及其内容。

考虑:

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

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

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

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

答案 1 :(得分:52)

文档解释得非常好。它还包含示例:

之前:

<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>

.empty():

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

后:

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

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

答案 2 :(得分:2)

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

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