Jquery $(document).on('click', селектор,...) vs $(селектор).on('click',

Я всегда использовал в прошлом:

$(selector).on('click', function )

Но сегодня я привязывал это к объекту, который пришел после docready (из ajax вызова). Связывание не будет.

После googling я увидел это:

$(document).on( event, selector, function ) 

синтаксис. И после изменения этого кода мой код работал.

Я был в перерыве с jquery и чувствую, что я что-то пропустил, есть ли настоящие различия в этих двух методах? Что они?

Является ли этот последний синтаксис единственным способом теперь привязывать новые элементы (для чего используется плагин livequery)?

Ответ 1

Первый пример связывает прослушиватель событий непосредственно с элементами. Он добавляет отдельный слушатель для каждого элемента, и он будет реагировать только на события на элементах, которые были в DOM на момент добавления слушателей.

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