事件捕获无法按预期工作

时间:2016-03-16 22:03:59

标签: javascript javascript-events

我正在尝试使用javascript捕获事件并且它没有按预期工作。

例如,这里有一些html:

<div id="test">
    <a href="someimage.jpg"><img src="someimage.jpg" /></a>
</div>

和javascript:

document.getElementById("test").addEventListener("click", function(event) {
    event.preventDefault();
    console.log(event.target.nodeName);
}, true);

我的理解是,由于捕获设置为true,因此单击图像应将DIV记录到控制台。相反,它会记录IMG ...

如果有人可以解释原因,或指向解释它的文档,那就太棒了。

2 个答案:

答案 0 :(得分:1)

  

我的理解是,由于捕获设置为.stacked(true),因此单击图像应将true记录到控制台。相反,它会记录DIV ...

这完全错了。 IMG将始终返回触发事件的元素,与事件处理阶段无关。请参阅spec

答案 1 :(得分:1)

您似乎将元素处理程序元素目标混淆。

当您使用event.target时,您指的是点击光标前面的元素。

相反,要引用事件的元素处理程序,您应该使用关键字this