我正在使用jQuery使一个div可点击,在这个div中还有锚点。我遇到的问题是,当我点击一个锚点时,两个点击事件都会触发(对于div和锚点)。如何防止在单击锚点时触发div的onclick事件?
以下是错误的代码:
JavaScript
以下是错误的代码:
JavaScript
var url = $("#clickable a").attr("href");
$("#clickable").click(function() {
window.location = url;
return true;
})
HTML
<div id="clickable">
<!-- Other content. -->
<a href="http://foo.example">I don't want #clickable to handle this click event.</a>
</div>
if(e.target !== this) return;
比在子元素中使用e.stopPropagation()
更好,因为你永远不知道其他人是否会附加一些处理程序到子元素上,或者某个库是否必须将处理程序附加到子元素上(你不想干扰库的代码)。这是更好的分离责任的方法。 - UTF_or_Deathif( e.target !== this) return;
这一检查放在父元素中意味着,如果该父元素中的任何其他子元素被点击且它们本身没有onClick处理程序,则不会发生任何操作。因此,在具有可点击父 div 的情况下,它是无用的。但e.stopPropagation()
则可以正常工作。 - derf26