Справочник API
.die() в jQuery
Содержание статьи
-
Категории: Events › Event Handler Attachment
Удаляет обработчики событий, предварительно установленные с помощью метода .live(), для всех элементов набора jQuery.
Синтаксис и описание:
Добавлено в jQuery 1.4.1.die( )
Добавлено в jQuery 1.3.die( eventType [, handler ] )
Добавлено в jQuery 1.4.3.die( events )
Команда .die() снимала обработчики событий, ранее установленные методом .live(). Пара .live()/.die() была ранним способом делегирования событий в jQuery — обработчик фактически вешался на document, а не на сами элементы, что плохо масштабировалось на больших страницах.
Возвращаемое значение: (объект) Набор jQuery.
Параметры:
eventType – (строка) Тип события, обработчики которого нужно снять.
handler – (функция, необязательно) Конкретная функция-обработчик; если не указана, снимаются все обработчики события eventType, установленные через .live().
events – (объект) Пары «тип события — обработчик» для снятия сразу нескольких обработчиков.
Примечание:
Методы .live() и .die() были помечены deprecated ещё в jQuery 1.7 (после появления делегирования в .delegate(), а затем и в .on()) и полностью удалены из jQuery в версии 1.9.
Примечание:
Переписать пару .live()/.die() на современный код можно через делегирование .on()/.off() с указанием общего контейнера-предка:
// было (jQuery 1.3–1.8, работать перестало с 1.9): $('.item').live('click', handler); $('.item').die('click', handler); // стало (актуально в jQuery 3.x и 4.0): $(document).on('click', '.item', handler); $(document).off('click', '.item', handler);Примечание:
Подробнее о механике делегирования через .on() — в статье подробнее о .on() и делегировании.
В jQuery 3.x и 4.0:
Метод .die() в актуальных версиях jQuery (3.7.1, 4.0) отсутствует полностью — вызов $(...).die(...) вернёт ошибку TypeError: ... .die is not a function. Если в проекте встречается такой код, это признак, что он не обновлялся с эпохи jQuery 1.x, и делегирование нужно переписать на
.on()/.off(), а не пытаться подключать старую версию библиотеки.
Примеры:
Исторический код на .live()/.die() — работал в jQuery 1.3–1.8, в актуальных версиях не работает, приведён только для понимания миграции.
// jQuery 1.3–1.8 (устарело, метод удалён в 1.9) $('.item').live('click', function() { alert('Клик по элементу'); }); // позже, чтобы снять обработчик: $('.item').die('click');Актуальный способ добиться того же результата, включая элементы, добавленные динамически, — делегирование через .on() с последующим снятием через .off().
$(document).on('click', '.item', function() { alert('Клик по элементу'); }); // снять обработчик: $(document).off('click', '.item');
Статьи по теме: