Справочник 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 – (объект) Пары «тип события — обработчик» для снятия сразу нескольких обработчиков.

  1. Примечание:

    Методы .live() и .die() были помечены deprecated ещё в jQuery 1.7 (после появления делегирования в .delegate(), а затем и в .on()) и полностью удалены из jQuery в версии 1.9.

  2. Примечание:

    Переписать пару .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);
  3. Примечание:

    Подробнее о механике делегирования через .on() — в статье подробнее о .on() и делегировании.

  4. В jQuery 3.x и 4.0:

    Метод .die() в актуальных версиях jQuery (3.7.1, 4.0) отсутствует полностью — вызов $(...).die(...) вернёт ошибку TypeError: ... .die is not a function. Если в проекте встречается такой код, это признак, что он не обновлялся с эпохи jQuery 1.x, и делегирование нужно переписать на .on()/.off(), а не пытаться подключать старую версию библиотеки.

Примеры:

  1. Исторический код на .live()/.die() — работал в jQuery 1.3–1.8, в актуальных версиях не работает, приведён только для понимания миграции.

    // jQuery 1.3–1.8 (устарело, метод удалён в 1.9)
    $('.item').live('click', function() {
      alert('Клик по элементу');
    });
    // позже, чтобы снять обработчик:
    $('.item').die('click');
  2. Актуальный способ добиться того же результата, включая элементы, добавленные динамически, — делегирование через .on() с последующим снятием через .off().

    $(document).on('click', '.item', function() {
      alert('Клик по элементу');
    });
    // снять обработчик:
    $(document).off('click', '.item');

[ наверх ]

Вопросы и ответы

Для чего используется .die() в jQuery?

Удаляет обработчики событий, предварительно установленные с помощью метода .live(), для всех элементов набора jQuery.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →