Какая разница между методами empty() и remove() в jQuery, и когда мы вызываем какой-либо из этих методов, создаваемые объекты будут уничтожены и выпущена память?
JQuery empty() vs remove()
Ответ 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 вместе с тегом тела.