当jquery.delegate调用事件处理程序时?

时间:2011-01-18 15:08:44

标签: javascript jquery event-handling

最近,我一直在使用.delegate和.live。他们在事件捕获方面有一个微妙的区别我猜。 当使用实时链接点击时,如$('a')。直播(“点击”,...,将图像作为其html内容的链接,最后使用点击处理程序将目标作为图像而不是链接。 鉴于委托,它似乎是作为目标传递的链接。

这里的问题是什么?

此外,当一个点击处理程序正在调用.delegate时,在捕获阶段还是冒泡阶段?

1 个答案:

答案 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应该始终是调用的节点。

参考:.live().delegate()