Каково различие между документом и DOM?

Таким образом, я столкнулся с частью о различии между jQuery, связывают () и живой () - http://msdn.microsoft.com/en-gb/scriptjunkie/ee730275.aspx - (Живой и раздел Let Die)

Связывать функция регистрирует обработчики событий в фактических элементах DOM, которые были выбраны, но живая функция регистрирует обработчики событий на документе.

Я использовал обе функции, таким образом, я получаю различие на практике т.е. .live ('щелчок', функция () {..}); будет стрелять во введенный узел JS, в то время как связывание эквивалентного не будет.

То, о чем я не знаю, является отношениями/различием между документом и DOM. Кто-либо может просветить меня?

Спасибо, Denis

1
задан Denis Hoctor 10 July 2010 в 08:31
поделиться

2 ответа

«Документ», на который вы ссылаетесь, - это переменная window.document , которую браузеры предоставляют в JavaScript, и является корневым узлом модели DOM. Помните, что DOM, как и ваш HTML-документ, представляет собой иерархию элементов.

В DOM события работают так: они передаются от вершины иерархии, документа, вниз к рассматриваемому элементу, позволяя каждому элементу между ними фиксировать событие. Затем они выполняют второй проход вверх по иерархии, называемый восходящей цепочкой. Упомянутые вами методы jQuery подключаются к фазе восходящей цепочки событий.

Подключившись к событию click в документе, вы увидите все события click для всех элементов, потому что все они проходят через корневой узел, документ. Затем jQuery фильтрует то, что вам нужно, на основе вашего селектора.

Если вы просто используете bind , вы подключитесь к событиям для данных элементов, которые существуют в данный момент времени. Если вы позже добавите на страницу новые элементы, они не будут привязаны к обратному вызову.

2
ответ дан 2 September 2019 в 23:08
поделиться

Это не разница между документом и DOM. Это разница между объектом документа и отдельными объектами элемента DOM. Функция live следит за всеми событиями в документе, и если объект, вызвавшую событие, соответствует селектору, он вызовет обработчик. С другой стороны, функция bind следит за событиями, вызванными определенным объектом элемента (обработчик прикреплен к этому конкретному объекту). При удалении и повторном создании элемента он будет другим объектом и не будет иметь прикрепленного обработчика событий. Это означает, что вы должны знать, что представляет собой объект во время выполнения bind.

0
ответ дан 2 September 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: