我正在开发一个遗留的Web应用程序,我正在逐步调整并发现需要从内联的onclick处理程序停止事件传播。
以此为例:
<a id="inner" onclick="return handleOnclick();" href="#">Some link</a>
除了onclick处理程序外,还添加了addEventListener
的侦听器。我需要在某些条件下onclick处理程序可以停止事件的传播。我试过了event.stopPropagation()
,但它似乎没有用。这是一个测试的方法:
http://jsfiddle.net/APQk6/985/
有什么想法吗?
答案 0 :(得分:2)
找到基于Felix Kling's评论的解决方案:
event.stopImmediatePropagation()
而不是event.stopPropagation()
这是一个有效的解决方案:
答案 1 :(得分:1)
您可以使用“已取消”属性。不好,但有效。 http://jsfiddle.net/koldev/45zbA/
<强> HTML 强>
<script>
function handleOnclick(self) {
self.setAttribute("cancelled", confirm('Stop event?') ? "1" : "0");
return false;
}
</script>
<div>
<a id="inner" onclick="return handleOnclick(this);" href="#">Some link</a>
</div>
<强>的JavaScript 强>
document.getElementById('inner').addEventListener('click', function(e){
if (this.getAttribute("cancelled") == "1") {
return;
}
alert("Listener called");
});