Осторожно! jQuery 1.9.0 не поддерживает live()

canvas В это трудно поверить, но это так! live() просто не работает в jQuery 1.9.0! Я случайно наткнулся, и потратил уйму времени прежде чем додумался проверить.

Проверяется это просто. Составляется простенький файл (см.ниже), в котором используются разные версии jQuery. С jQuery 1.7.1 всё работает прекрасно! А вот jQuery 1.9.0 просто как рыба об лёд. В файле показана обработка через событий mouseleave, mouseenter, click через live(). Что характерно через bind() оно прекрасно работает с обеими версиями!


    


	
    
    


	
Div1
Div2
Div3

Что это? Баг или новая фишка? Не знаю. В релизах ничего не нашёл.

Но НИКОГДА не используйте последнюю версию, особенно хотлинком с сайта разработчика.

PS: Кстати, пока гуглил проблему, нашёл дельный материал, который не могу не попиарить Особенности работы jQuery.live(). Материал довольно старый, но я, как оказалось, не в курсе.

UPD Спасибо всем комментирующим. Это оказывается новая фишка. jQuery и правда уходит от live(). А я — слоупок.

UPD-2 Подробнее тут

Осторожно! jQuery 1.9.0 не поддерживает live(): 10 комментариев

  1. SunChaser

    $(‘.some.selector’).live(‘someevent’) соответствует $(document).on(‘someevent’, ‘.some.selector’)

    но это те же проблемы с производительностью

    рекомендуют вешать его не на document, а на что-нибудь поменьше

    $(‘#content’).on(‘someevent’, ‘.some.selector’) напр повешает эвент на самселекторы только контента

    on без селектора соответствует bind

  2. virua

    jQuery команда сделала плагин jQuery Migrate, что делает код, написанный до версии 1.9 рабочим и для этой версии. Я его не пробовал, но это должно быть неплохое решение, чтобы не переписывать код. https://github.com/jquery/jquery-migrate

  3. Уведомление: jQuery отказывается от live() « Блог о CMS

  4. realmag777

    Esli proekt bolshoy i ne tak prosto pomeniat live na on, to mozhno postupit tak:
    jQuery(document).ready(function() {

    jQuery.fn.live = function (types, data, fn) {
    jQuery(this.context).on(types,this.selector,data,fn);
    return this;
    };
    });

    Toest pros pereopredelit. I spokoino polzovat jquery 1.9.x

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

    @ realmag777: прикольный вариант!

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