jQuery 1.7 .on (), зачем это нужно? - PullRequest
5 голосов
/ 04 ноября 2011

Я не понимаю, почему существует этот метод ....

http://api.jquery.com/on/

Мне кажется, вы всегда будете делать $(el).click() вместо $(el).on('click', function...

Ответы [ 5 ]

4 голосов
/ 04 ноября 2011

$(el).on предоставляет разработчикам унифицированный способ связывания событий для любых типов событий, прямых и делегированных событий.Это также позволяет вам связывать более одного события одновременно, передавая объект (2-й пример в документации )

Вы также сохраняете несколько нажатий клавиш, для чего это стоит.

2 голосов
/ 04 ноября 2011

$(el).click(...) - сокращение от $(el).bind('click', ...). Если вы сравните документацию для bind() с документацией для on(), вы увидите ряд различий.

Это довольно хорошо суммировано в первом абзаце bind() документации:

Начиная с jQuery 1.7, метод .on () является предпочтительным методом для прикрепление обработчиков событий к документу. Для более ранних версий Метод .bind () используется для непосредственного присоединения обработчика событий к элементы. Обработчики прикрепляются к выбранным в данный момент элементам в объект jQuery, поэтому эти элементы должны существовать в точке вызова в .bind () происходит. Для более гибкой привязки событий смотрите обсуждение делегирования событий в .on () или .delegate ().

2 голосов
/ 04 ноября 2011

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

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

Насколько я понимаю, новый .on() - это объединение несколько дублирующих функций в .bind(), .delegate() и .live().Это как объединение API, так и объединение реализаций в более унифицированную реализацию.

0 голосов
/ 04 ноября 2011

Мне кажется, что он готовится объединить / заменить различные другие функции привязки событий ... Одна функция, чтобы связать их всех! (LOTR geekery ftw)

...