最近,我一直在使用.delegate和.live。他们在事件捕获方面有一个微妙的区别我猜。 当使用实时链接点击时,如$('a')。直播(“点击”,...,将图像作为其html内容的链接,最后使用点击处理程序将目标作为图像而不是链接。 鉴于委托,它似乎是作为目标传递的链接。
这里的问题是什么?
此外,当一个点击处理程序正在调用.delegate时,在捕获阶段还是冒泡阶段?
答案 0 :(得分:2)
.live
和.delegate
之间的主要区别在于,.delegate()
使用context
。换句话说,.delegate()
实际上是.live()
的包装器,但是看着文件根用于冒泡事件,它只会看一个给定的根节点。
例如
$('a').live('click', function() {
});
将创建附加到document.body
的事件处理程序。这将绝对抓住您网站上发生的所有anchors
次点击。
$('#someDiv').delegate('a', 'click', function() {
});
只会“监视”来自#someDiv
的所有儿童节点的锚点。
.live()
的委托事件不太可能有另一个目标。 .live()
和.delegate()
都将事件对象传递到处理程序中。它应该没有任何区别,event.target
应该始终是调用的节点。