文档和DOM之间有什么区别?

时间:2010-07-10 08:31:30

标签: jquery events dom document

所以我遇到了一篇关于jQuery的bind()和live() - http://msdn.microsoft.com/en-gb/scriptjunkie/ee730275.aspx之间的区别 - (Live and Let Die部分)

  

bind函数使用所选的实际DOM元素注册事件处理程序,但live函数在文档上注册事件处理程序。

我已经使用了这两个函数,所以我在实践中得到了不同,即.live('click',function(){..});将在JS注入节点上触发,而绑定等效节点不会。

我不知道的是文档和DOM之间的关系/区别。有人可以开导我吗?

谢谢, 丹尼斯

2 个答案:

答案 0 :(得分:2)

您所引用的“文档”是JavaScript中公开的window.document变量浏览器,并且是DOM的根节点。请记住,DOM与HTML文档一样,是元素的层次结构。

事件在DOM中的工作方式是它们从层次结构的顶部(文档)传递到相关元素,允许其间的每个元素捕获事件。然后他们在层次结构中进行第二次传递,称为冒泡。你提到的jQuery方法都涉及事件的冒泡阶段。

通过挂钩文档上的click事件,您可以看到所有元素上的所有click事件,因为它们都通过根节点即文档。然后,jQuery根据您的选择器过滤您需要的内容。

如果您只是使用bind,那么您将挂钩在给定时间存在的给定元素的事件。如果稍后向页面添加新元素,则它们不会将回调绑定到它们。

答案 1 :(得分:0)

文档和DOM之间没有区别。它是文档对象和各个DOM元素对象之间的区别。 live函数监视文档中的所有事件,如果触发事件的对象与选择器匹配,它将调用处理程序。另一方面,bind函数监视由特定元素对象触发的事件(处理程序附加到该特定对象)。如果删除并重新创建元素,它将是一个不同的对象,并且不会附加事件处理程序。这意味着您必须知道运行bind时对象是什么。