JQuery empty() vs remove()

Какая разница между методами empty() и remove() в jQuery, и когда мы вызываем какой-либо из этих методов, создаваемые объекты будут уничтожены и выпущена память?

Ответ 1

  • empty() удалит все содержимое выделения.
  • remove() удалит выделение и его содержимое.

Рассмотрим:

<div>
    <p><strong>foo</strong></p>
</div>

$('p').empty();  // --> "<div><p></p></div>"

// whereas,
$('p').remove(); // --> "<div></div>"

Оба из них удаляют объекты DOM и должны освобождать память, которую они используют, да.

Ответ 2

Документация объясняет это очень хорошо. Он также содержит примеры:

перед:

<div class="container">
  <div class="hello">Hello</div>
  <div class="goodbye">Goodbye</div>
</div>

.remove():

$('.hello').remove();

после

<div class="container">
  <div class="goodbye">Goodbye</div>
</div>

перед:

<div class="container">
  <div class="hello">Hello</div>
  <div class="goodbye">Goodbye</div>
</div>

.empty():

$('.hello').empty();

после

<div class="container">
  <div class="hello"></div>
  <div class="goodbye">Goodbye</div>
</div>

Что касается памяти, то после удаления элемента из DOM и ссылок на него больше нет, сборщик мусора будет восстанавливать память при ее запуске.

Ответ 3

$("body").empty() - он удаляет элементы HTML DOM внутри тега body -

когда вы объявляете $("body").remove() - он удаляет всю HTML DOM вместе с тегом тела.