取消对HTML锚标记的冒泡

Nav*_*eet 9 html javascript anchor

我在我的网页上进行了以下设置

<div id="clickable">
  <a href="hello.com">Here!</a>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以用来避免触发div的click事件.我认为它与onclick在锚标签的属性中设置某些东西有关,但是尝试简单的事情就好像e.preventDefault()没有用.

救命?谢谢!

小智 11

e.preventDefault(); 不会在onclick属性中工作,因为e未定义.还有e.preventDefault(); 不希望你想停止冒泡,你需要e.stopPropagation();

使用;

onclick="$(this).stopPropagation();"
Run Code Online (Sandbox Code Playgroud)

在你的锚上,或

$(a).click(function(e){
  e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

在你的活动中.

  • 给未来的读者注意,这个答案是使用 jQuery 语法。请参阅 @Poison Oak 对 Vanilla JS 解决方案的回答 (7认同)

Poi*_*Oak 6

Vanilla JS 对已接受答案的扩展。event.stopPropagation()是在不禁用默认行为的情况下防止事件冒泡到父容器的最具体且可预测的方法。在以下示例中,<a/>即使包含在可单击的 中,也不会触发警报<div/>

<script>
  function linkHandler(event) {
    event.stopPropagation()
  }
</script>
<div onclick="alert('fail)">
  <a href="http://stackoverflow.com" onclick="linkHandler(event)">Link</a>
</div>
Run Code Online (Sandbox Code Playgroud)