Réponses:
empty()
videra la sélection de son contenu, mais conservera la sélection elle-même.remove()
va vider la sélection de son contenu et supprimer la sélection elle-même.Considérer:
<div>
<p><strong>foo</strong></p>
</div>
$('p').empty(); // --> "<div><p></p></div>"
// whereas,
$('p').remove(); // --> "<div></div>"
Les deux suppriment les objets DOM et devraient libérer la mémoire qu'ils occupent, oui.
Voici des liens vers la documentation, qui contient également des exemples:
live
ou delegate
.
La documentation l'explique très bien. Il contient également des exemples:
avant:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.retirer():
$('.hello').remove();
après:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
avant:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.vide():
$('.hello').empty();
après:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
En ce qui concerne la mémoire, une fois qu'un élément est supprimé du DOM et qu'il n'y a plus de références à celui-ci, le garbage collector récupérera la mémoire lors de son exécution.
$("body").empty()
- il supprime les éléments HTML DOM à l'intérieur de la balise body -
lorsque vous déclarez $("body").remove()
- il supprime tout le DOM HTML avec le corps TAG.