Не работает функция live jQuery старше 1.7

При выходе jQuery 1.7 в числе прочих обновлений был изменен механизм привязки к событиям в документе. Теперь вместо live, bind, delegate используется метод on() и противоположный ему off().

$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );

При создании обработчика для события в параметрах функции on должен быть указан тип события и функция обработчик, это будет равнозначно bind
Если также указан селектор — метод работает как delegate, т.е. к отфильтрованным элементам привязывает функцию обработчик события events.
Стоит обратить внимание, что если data — это строка, то селектор необходимо передавать явно, чтобы data не была принята за selector. При передаче data в виде объекта об этом волноваться не нужно.

Далее приведены привязки в примерах, где видно наглядно как следует заменять старые функции на новые

$('a').bind('click', handler);
$('a').on('click', handler);

$('form').bind('submit', { val: 77 }, function);
$('form').on('submit', { val: 77 }, function);

$(window).unbind('myFunction');
$(window).off('myFunction');

$('.range').delegate('a.less', 'click', function);
$('.range').on('click', 'a.less', function);

$('.box').undelegate('a', 'click.openBox');
$('.box').off('click.openBox', 'a');

$('a').live('click', function);
$(document).on('click', 'a', function);

$('a').die('click');
$(document).off('click', 'a');

Похожие статьи

Статья оказалась полезной? Вырази благодарность - поделись в соцсетях

Отзывы : 3 комментария

Комментирование отключено