Как уничтожить элемент DOM с помощью jQuery?

Ответы:

195

Это $target.remove();то, что вы ищете?

https://api.jquery.com/remove/

Jourkey
источник
77
Конечно, это удалит его только из видимого документа. Если есть другие ссылки на узел из JavaScript, такие как сама переменная $ target, объект пока ускользнет из сборщика мусора. Если вы хотите УНИЧТОЖИТЬ его, вы также должны потерять все ссылки на него. Я не совсем уверен, почему вы хотите УНИЧТОЖИТЬ элемент DOM. Может, ты просто ненавидишь $ target. Бедный $ target, что он с тобой сделал?
bobince
53
$ target добр, когда он один, но он становится неприятным, когда он находится рядом со своими 100000 клонированных друзей.
Себастьян Гриньоли
2
Будет .empty()аналогичный эффект?
Саураб Нанда,
3
@SaurabhNanda - Empty удалит содержимое объекта, но не удалит (или не уничтожит) сам объект.
Люк
45

Если вы хотите полностью уничтожить цель, у вас есть несколько вариантов. Сначала вы можете удалить объект из DOM, как описано выше ...

console.log($target);   // jQuery object
$target.remove();       // remove target from the DOM
console.log($target);   // $target still exists

Вариант 1. Затем замените цель пустым объектом jQuery (jQuery 1.4+)

$target = $();
console.log($target);   // empty jQuery object

Вариант 2 - Или полностью удалите свойство (приведет к ошибке, если вы укажете на него в другом месте)

delete $target;
console.log($target);   // error: $target is not defined

Дополнительная литература: информация о пустом объекте jQuery и информация об удалении

Люк
источник
3
Почему delete $targetне работает: perfectionkills.com/understanding-delete/#misconceptions Почему не $target=nullработает?
LeeGee
@LeeGee - Не могли бы вы подвести итог своей публикации, чтобы объяснить, почему удаление не работает для объектов jQuery? Почему это работает, когда мы смотрим на console.log ($ target) в конце? Спасибо.
Люк
Я не могу объяснить это лучше, чем процитированная статья, которую я нашел очень подробной.
LeeGee
Для записи, это работает в консоли, потому что консоль оценивает JS в рамках eval, что позволяет удалить. Переменные в «естественных» областях не удаляются. $target=nullВместо этого используйте . Это быстрее и не мешает внутренней оптимизации браузера.
bendman
1
Удалить можно. Это просто означает, что блок не будет оптимизирован JS-движком. В большинстве случаев это совершенно не имеет значения. Когда это становится проблемой, вы ищите способы обойтись без удаления. Не раньше, чем.
Чарли Мартин
0

Не уверен, что это только я, но использование .remove () не работает, если вы выбираете по идентификатору.

Пример: $ ("# мой-элемент"). Remove ();

Мне пришлось использовать вместо этого класс элемента, иначе ничего не произошло.

Пример: $ (". Мой-элемент"). Remove ();

Ричард
источник