2013-11-17 3 views
10

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

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

Но сегодня .. Я связывание этого на объекте, который пришел после docready (с помощью AJAX вызова) связывание не будет придерживаться

после прибегая к помощи я увидел это:.

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

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

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

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

+6

http://api.jquery.com/on Эта ссылка предоставит все ответы, которые могут вам понадобиться. –

+1

Существуют настоящие различия между ними, и они подробно описаны в [** documentation **] (http://api.jquery.com/on/) – adeneo

+4

В частности, обратите внимание на раздел [Прямые и делегированные события] (http://api.jquery.com/on/#direct-and-delegated-events). –

ответ

14

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

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

Смежные вопросы