Respuestas:
empty()
vaciará la selección de su contenido, pero conservará la selección en sí.remove()
vaciará la selección de su contenido y eliminará la selección en sí.Considerar:
<div>
<p><strong>foo</strong></p>
</div>
$('p').empty(); // --> "<div><p></p></div>"
// whereas,
$('p').remove(); // --> "<div></div>"
Ambos eliminan los objetos DOM y deberían liberar la memoria que ocupan, sí.
Aquí hay enlaces a la documentación, que también contiene ejemplos:
live
o delegate
.
La documentación lo explica muy bien. También contiene ejemplos:
antes de:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.eliminar():
$('.hello').remove();
después:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
antes de:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.vacío():
$('.hello').empty();
después:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
En lo que respecta a la memoria, una vez que se elimina un elemento del DOM y no hay más referencias al mismo, el recolector de basura reclamará la memoria cuando se ejecute.
$("body").empty()
- elimina los elementos DOM HTML dentro de la etiqueta del cuerpo -
cuando declara $("body").remove()
, elimina todo el DOM HTML junto con el cuerpo TAG.