Quelle est la différence entre les méthodes empty()
et remove()
dans jQuery
, et lorsque nous appelons l'une de ces méthodes, les objets créés seront détruits et la mémoire libérée?
empty()
supprimera tout le contenu de la sélection.remove()
supprimera la sélection et son contenu.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.
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, 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 l'intégralité du DOM HTML avec le corps TAG.