Какая разница между методами 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 вместе с тегом тела.