Як знищити елемент DOM за допомогою jQuery?


Відповіді:


194

Це $target.remove();те, що ви шукаєте?

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


75
Звичайно, це лише видаляє його з видимого документа. Якщо є інші посилання на вузол з JavaScript, наприклад, сама змінна $ target, об’єкт поки що не буде збирати смітник. Якщо ви хочете знищити його, ви також повинні втратити всі посилання на нього. Я не зовсім впевнений, чому ви хочете знищити елемент DOM. Можливо, ви просто ненавидите $ target. Бідна $ ціль, що вона вам коли-небудь робила?
bobince

52
$ target є добрим, коли він один, але йому стає неприємно, коли він знаходиться біля своїх 100 000 клонованих друзів.
Себастьян Гріньолі

2
Чи .empty()матиме подібний ефект?
Саураб Нанда

3
@SaurabhNanda - Empty видалить вміст об'єкта, але не видалить (або знищить) сам об'єкт.
Лука

46

Якщо ви хочете повністю знищити ціль, у вас є пара варіантів. Спочатку ви можете видалити об'єкт із 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замість цього. Це швидше і не возиться з внутрішніми оптимізаціями браузера.
Бендман

1
Видалити добре. Це просто означає, що блок не буде оптимізований двигуном JS. У більшості випадків це абсолютно не має значення. Коли це стає проблемою, ви шукаєте шляхи використання видалення. Не раніше.
Чарлі Мартін

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.