Конечно, это удалит его только из видимого документа. Если есть другие ссылки на узел из 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+)
@LeeGee - Не могли бы вы подвести итог своей публикации, чтобы объяснить, почему удаление не работает для объектов jQuery? Почему это работает, когда мы смотрим на console.log ($ target) в конце? Спасибо.
Люк
Я не могу объяснить это лучше, чем процитированная статья, которую я нашел очень подробной.
LeeGee
Для записи, это работает в консоли, потому что консоль оценивает JS в рамках eval, что позволяет удалить. Переменные в «естественных» областях не удаляются. $target=nullВместо этого используйте . Это быстрее и не мешает внутренней оптимизации браузера.
bendman
1
Удалить можно. Это просто означает, что блок не будет оптимизирован JS-движком. В большинстве случаев это совершенно не имеет значения. Когда это становится проблемой, вы ищите способы обойтись без удаления. Не раньше, чем.
.empty()
аналогичный эффект?Если вы хотите полностью уничтожить цель, у вас есть несколько вариантов. Сначала вы можете удалить объект из 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 и информация об удалении
источник
delete $target
не работает: perfectionkills.com/understanding-delete/#misconceptions Почему не$target=null
работает?$target=null
Вместо этого используйте . Это быстрее и не мешает внутренней оптимизации браузера.Вы ищете
.remove()
функцию.http://docs.jquery.com/Manipulation/remove
источник
Не уверен, что это только я, но использование .remove () не работает, если вы выбираете по идентификатору.
Пример: $ ("# мой-элемент"). Remove ();
Мне пришлось использовать вместо этого класс элемента, иначе ничего не произошло.
Пример: $ (". Мой-элемент"). Remove ();
источник