所以我遇到了一篇关于jQuery的bind()和live() - http://msdn.microsoft.com/en-gb/scriptjunkie/ee730275.aspx之间的区别 - (Live and Let Die部分)
bind函数使用所选的实际DOM元素注册事件处理程序,但live函数在文档上注册事件处理程序。
我已经使用了这两个函数,所以我在实践中得到了不同,即.live('click',function(){..});将在JS注入节点上触发,而绑定等效节点不会。
我不知道的是文档和DOM之间的关系/区别。有人可以开导我吗?
谢谢, 丹尼斯
答案 0 :(得分:2)
您所引用的“文档”是JavaScript中公开的window.document
变量浏览器,并且是DOM的根节点。请记住,DOM与HTML文档一样,是元素的层次结构。
事件在DOM中的工作方式是它们从层次结构的顶部(文档)传递到相关元素,允许其间的每个元素捕获事件。然后他们在层次结构中进行第二次传递,称为冒泡。你提到的jQuery方法都涉及事件的冒泡阶段。
通过挂钩文档上的click
事件,您可以看到所有元素上的所有click
事件,因为它们都通过根节点即文档。然后,jQuery根据您的选择器过滤您需要的内容。
如果您只是使用bind
,那么您将挂钩在给定时间存在的给定元素的事件。如果稍后向页面添加新元素,则它们不会将回调绑定到它们。
答案 1 :(得分:0)
文档和DOM之间没有区别。它是文档对象和各个DOM元素对象之间的区别。 live
函数监视文档中的所有事件,如果触发事件的对象与选择器匹配,它将调用处理程序。另一方面,bind
函数监视由特定元素对象触发的事件(处理程序附加到该特定对象)。如果删除并重新创建元素,它将是一个不同的对象,并且不会附加事件处理程序。这意味着您必须知道运行bind
时对象是什么。