链接不会在具有带有preventDefault的事件处理程序的元素内部工作

时间:2014-07-08 21:39:47

标签: javascript html html5 dom

说我有这样的设置:

<div>
    <a href="http://www.google.com/">hi</a>
</div>

由于某种原因,我必须在div上有一个事件处理程序,它已经调用了preventDefault()。 在Chrome(可能还有其他浏览器)中,这会破坏div中的链接。我再也无法点击它们了,按照链接的唯一方法是右键单击并在新标签页中打开。

我能想到的唯一解决方案是在这个jsfiddle中: http://jsfiddle.net/QB698/

但这个解决方案似乎非常严重。难道没有更好的方法可以解决这个问题,所以我不必将事件添加到可能位于带有preventDefault处理程序的div中的每个链接上吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为您可以{em>捕获事件的捕获阶段中的点击事件stopPropagation。然后,您不必将click事件绑定到每个子链接:

document.getElementById("asd").addEventListener("click", function(e) {
    e.stopPropagation();
}, true);

演示:http://jsfiddle.net/QB698/1/