jQuery 1.7: преобразовать ярлыки событий, такие как click (), в on ()? - PullRequest
9 голосов
/ 30 ноября 2011

Я только что узнал, что в jQuery 1.7 появился новый метод, on().В моем кратком исследовании я рассматриваю его как консолидированный способ связывания событий, а не решение, какой из bind(), live() и delegate() использовать.ИМО, это действительно хорошее дополнение, которое предлагает множество преимуществ.Но тогда я не уверен, нужно ли мне преобразовывать ярлыки событий, такие как click().Согласно официальному документу, определение click() является все еще сокращением до .bind('click', handler).Я думал, что для разработчиков jQuery будет более разумно переопределить click () и другие ярлыки событий в v1.7 + для использования с (), нет?

Ответы [ 2 ]

5 голосов
/ 30 ноября 2011

Документация jQuery четко представляет .click() как сокращение от .on("click"), поэтому, я думаю, вы можете заменить все свои предыдущие вызовы, если хотите.

Извлечение документации по методу on():

Для некоторых событий существуют сокращенные методы, такие как .click () , которые можно использовать для подключения или запуска обработчиков событий. Полный список сокращенных методов см. В категории событий.

Метод .on() фактически делает то же самое, что и .bind(), за исключением того, что вы можете связать несколько событий одновременно и выбрать набор потомков, которые фактически запускают это событие.

Я не думаю, что имеет смысл использовать on() вместо click(), если вам не нужно связать несколько событий или сделать что-то более сложное с фильтрацией дочерних элементов.

1 голос
/ 30 ноября 2011

ghusse прав, нет необходимости заменять все ваши ярлыки .click () на .on (), но вы должны заменить код .live () на .on (), потому что .live () помечен как устарела и может быть удалена с помощью jQuery 1.8 ... обсуждение продолжается.

$('SELECTOR').live('click', function(e) { ... });

$('UPSELECTOR').on('click', 'SELECTOR', function(e) { ... });

Где UPSELECTOR либо совпадает с SELECTOR (тогда вы можете опустить второй параметр .on()), либо оно представляет (набор) элементов выше в дереве DOM, т.е. элемент (ы) ), который будет пройден, когда событие пузырится. Общий выбор здесь будет document или body

...