Risposte:
empty()
svuoterà la selezione del suo contenuto, ma preserverà la selezione stessa.remove()
svuoterà la selezione del suo contenuto e rimuoverà la selezione stessa.Tener conto di:
<div>
<p><strong>foo</strong></p>
</div>
$('p').empty(); // --> "<div><p></p></div>"
// whereas,
$('p').remove(); // --> "<div></div>"
Entrambi rimuovono gli oggetti DOM e dovrebbero liberare la memoria che occupano, sì.
Di seguito sono riportati i collegamenti alla documentazione, che contiene anche esempi:
live
o delegate
.
La documentazione lo spiega molto bene. Contiene anche esempi:
prima:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.rimuovere():
$('.hello').remove();
dopo:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
prima:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.vuoto():
$('.hello').empty();
dopo:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
Per quanto riguarda la memoria, una volta che un elemento viene rimosso dal DOM e non ci sono più riferimenti ad esso, il garbage collector recupererà la memoria quando viene eseguito.
$("body").empty()
- rimuove gli elementi HTML DOM all'interno del tag body -
quando dichiari $("body").remove()
- rimuove l'intero HTML DOM insieme al body TAG.