web-dev-qa-db-fra.com

jQuery empty () vs remove ()

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?

96
mabuzer
  • 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.

155
nickf

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.

53
Darin Dimitrov

$("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.

2
user1452840