Как работает jQuery .live ()? - PullRequest
8 голосов
/ 23 июля 2011

Я думал о производительности относительно

.click() против .live("click")

и это заставило меня задуматься о том, как .live работает.

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

Ответы [ 5 ]

12 голосов
/ 23 июля 2011

live связывает событие click с элементом document DOM. Когда события браузера всплывают через дерево DOM, событие щелчка запускается для любых соответствующих элементов.

Вот хорошая статья, объясняющая все это.

http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/

8 голосов
/ 23 июля 2011
2 голосов
/ 23 июля 2011

Из руководства по jQuery .live () :

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

Как видите, таймер не задействован.

2 голосов
/ 23 июля 2011

.live не прикрепляет события к каждому элементу в dom, даже когда dom изменяется.Он прослушивает событие корневого элемента, такого как body, или любого контейнера, к которому присоединен live.Когда событие во внутреннем элементе уровня инициируется, оно проверяет цель и совпадает с селектором, указанным в прямом эфире, и, если оно совпадает, вызывает это событие.

0 голосов
/ 23 июля 2011

, если вы добавляете элементы в DOM динамически и хотите, чтобы обработчик кликов был привязан к ним, вам придется использовать live или delegate, но если вы не просто используете click

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