Производительность обработчика событий jQuery live () - PullRequest
1 голос
/ 17 июня 2011

Я рассматриваю возможность использования live() для привязки обработчика событий к функции, которую я не вставил в DOM. Однако это выглядит дорого - необходимо выполнять проверку во время выполнения каждый раз, когда вставляется элемент, или всякий раз, когда выполняется элемент «щелчка», например, чтобы увидеть, должен ли вызываться обработчик.

Стоит ли беспокоиться об этом на практике, или Javascript настолько быстр, что об этом не стоит беспокоиться?

Справочная страница для функции live(): http://api.jquery.com/live/

Ответы [ 2 ]

6 голосов
/ 17 июня 2011

Нет, .live() использует всплывающее событие , чтобы сделать свое дело.Он просто присоединяется к корневому элементу и реагирует на события, всплывающие через дерево DOM.Он не постоянно проверяет элементы DOM.

На самой странице, на которую вы ссылаетесь:

Метод .live() способен воздействовать на элементыкоторые еще не были добавлены в DOM с помощью делегирования событий: обработчик, связанный с элементом-предком, отвечает за события, которые запускаются на его потомках.Обработчик, переданный в .live(), никогда не привязывается к элементу;вместо этого .live() связывает специальный обработчик с корнем дерева DOM.

Продолжение чтения, поскольку это углубляется в детали.

2 голосов
/ 17 июня 2011

Возможно, лучше использовать delegate(), который не прикрепляет обработчик к документу, а к указанному родительскому элементу.Это означает гораздо меньшую нагрузку.В большинстве случаев рекомендуется использовать его вместо .live().

О различиях в Nettuts +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...