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

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

При создании обработчика для события в параметрах функции 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');


Оставьте свой комментарий

Оставить комментарий от имени гостя

0 / 2500 Ограничение символов
Ваш текст должен быть в пределах 10-2500 символов
Комментарии | Добавить свои
  • Комментарии не найдены