jQuery отказывается от live()

jQuery В вашем jQuery не работает live?

Специально для таких же слоупоков как я, спешу сообщить, что jQuery официально отказывается от поддержки метода live().

Официально об этом можно почитать тут. Краткий смысл на русском такой.

Итак .live() устарел. Он объявлен устаревшим уже с версии 1.7 и вот похоже на 1.9 перестал поддерживаться вообще.

Вместо него предлагается использовать .on(). Переписать код на новую функцию довольно просто:

$(selector).live(events, data, handler); // jQuery 1.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+

Просто тупо заменить код. Всё почти как раньше. Начиная с версии 1.7 рекомендовалось использовать .on(), а с 1.9 e нас просто нет выбора. Чем это лучше?

  • .live() до выполнения собственно действия проверяет весь документ, который может быть очень большим. С помощью .on() можно сузить область поиска указав нужный селектор контейнера вместо документа
  • Оказывается .live() не работает в цепочке. То есть такой код не будет работать как ожидается:

    $("a").find(".offsite, .external").live( ... );
  • Оказывается в ряде мобильных платформ .live() не может работать с событием click.
  • … ну и прочие мелкие глюки, которых вы не будете знать, если перестанете работать с .live()

PS: Спасибо моим читателям (особенно SunChaser). Без вас я бы и дальше не знал о происходяшем.

jQuery отказывается от live(): 4 комментария

  1. Уведомление: Осторожно! jQuery 1.9.0 не поддерживает live() « Блог о CMS

  2. altesack Автор записи

    @ My-suicide:
    Комменты закрыты потому, что я более трёх лет не занимаюсь этим плагином. И поэтому немного не в теме. Я даже не помню, чтобы отображался коэффициент.

    Но помню, что когда ты залогинен администратором, то тебе показывается немного больше информации чем простому пользователю. Попробуй разлогинься и посмотри. Проблема исчезнет?

  3. My-suicide

    Да, как оказалось, это только админ видит…

Комментарии запрещены.