我在考虑有关
的表现 .click()
vs .live("click")
这让我想知道.live是如何运作的。
它是否监视DOM更改以及何时检测到DOM中的更改它只是附加事件然后,它是否使用某种计时器(我不这么认为,但如果这样做非常重要,计时器会我是一个伤心的人)
答案 0 :(得分:12)
live
将click
事件绑定到DOM的document
元素。当浏览器事件通过DOM树冒泡时,会触发任何匹配元素的click事件。
这是一篇很好的文章,解释了这一切。
http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/
答案 1 :(得分:8)
答案 2 :(得分:2)
即使dom发生变化,.live也不会将事件附加到dom中的每个元素。它将事件侦听到根元素,如正文或附加了live的任何容器。一旦触发了内部级别元素中的事件,它就会检查目标并与实时中指定的选择器匹配,如果匹配,则会引发该事件。
答案 3 :(得分:2)
来自.live()上的jQuery手册:
.live()方法能够影响尚未存在的元素 通过使用事件委托添加到DOM:处理程序绑定 祖先元素负责触发的事件 它的后代。传递给.live()的处理程序永远不会绑定到 元件;相反,.live()将一个特殊的处理程序绑定到。的根 DOM树。
如您所见,没有涉及计时器。
答案 4 :(得分:0)
如果您要动态地向DOM添加元素并希望将点击处理程序附加到它们,则必须使用live
或delegate
,但如果您不是简单地使用click