2010-06-22 84 views

回答

145
  • empty()將刪除選擇的所有內容。
  • remove()將刪除選擇及其內容。

考慮:

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

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

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

他們都去掉DOM對象和應釋放它們佔用內存,是的。

+1

事件處理程序呢?我有一個奇怪的情況,空+兩次追加,不同的追加會導致第二組附加項執行第一組的處理程序。 – Killroy 2015-01-08 19:15:03

+0

@太晚了,但他們也刪除了處理程序。你有機會讓這些處理程序註冊一個像「live」或「delegate」這樣的函數。 – undone 2017-12-20 11:24:06

48

該文檔很好地解釋了它。它還包含例子:

前:

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

一個.remove():

$('.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> 

至於存儲器而言,一旦一個ELE ment從DOM中被移除,並且沒有更多的引用,垃圾收集器在運行時將回收內存。

+0

很好的回答... thnx :) – Bhupi 2011-07-29 06:36:03

+0

空不會觸及選擇器的屬性。如果你想刪除selector元素的屬性,我注意到jQuery removeAttr和removeClass在Firefox中是buggy。所以我的選擇是使用remove方法並再次添加容器元素,然後將子節點添加到相同的位置。 – randominstanceOfLivingThing 2013-12-12 17:56:36

+0

類似地,你可以解釋detach()也分別與上述兩個... – Krish 2016-04-28 07:39:00

1

$("body").empty() - 它是消除身體標記中的HTML DOM元素 -

在聲明 $("body").remove()

- 它刪除整個HTML DOM與身體一起TAG。

+15

這個答案在現有答案中缺少三年的答案嗎? – jcsanyi 2013-08-03 06:06:14