Respostas:
empty()
irá esvaziar a seleção de seu conteúdo, mas preservará a seleção em si.remove()
irá esvaziar a seleção de seu conteúdo e remover a própria seleção.Considerar:
<div>
<p><strong>foo</strong></p>
</div>
$('p').empty(); // --> "<div><p></p></div>"
// whereas,
$('p').remove(); // --> "<div></div>"
Ambos removem os objetos DOM e devem liberar a memória que eles ocupam, sim.
Aqui estão links para documentação, que também contém exemplos:
live
ou delegate
.
A documentação explica muito bem. Ele também contém exemplos:
antes:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.remover():
$('.hello').remove();
depois de:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
antes:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.vazio():
$('.hello').empty();
depois de:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
No que diz respeito à memória, assim que um elemento for removido do DOM e não houver mais referências a ele, o coletor de lixo irá recuperar a memória quando for executado.
$("body").empty()
- ele remove os elementos HTML DOM dentro da tag body -
quando você declara $("body").remove()
- ele remove todo o HTML DOM junto com o corpo TAG.