通过onclick里面禁用HREF

问题描述 投票:-1回答:3

如果在href元素中触发了具有onclick函数的元素,如何禁用a <a>

我试过event.preventDefault();,但它似乎没有做任何事情。 我怎么解决这个问题?

$(function() {
  $(".inside > .fa").click(function(event) {
    event.preventDefault();
    alert("TEST");
  });
});
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href='/'>
  <div class='button'>
    <div class='inside'>
      <i class="fa fa-globe"></i>
    </div>
  </div>
</a>
javascript jquery html onclick href
3个回答
1
投票

点击仍然向上冒泡。请改用event.stopPropagation();。您在没有默认单击行为的元素上使用event.preventDefault(),因此它什么都不做。

$(function() {
  $(".inside > .fa").click(function(e) {
    e.stopPropagation();
    console.log(e.target);
  });
});
a {
  display: block; /* required otherwise you cannot have block level elements like div inside a */
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href='https://google.com' target="_top">
  <div class='button'>
    <div class='inside'>
      <i class="fa fa-globe"></i>
    </div>
  </div>
</a>

0
投票

试试qazxsw poi而不是qazxsw poi来阻止事件冒泡


0
投票

return false标签上注册您的事件监听器。并在下面进行更改。这利用了事件委派(一件好事)。

你需要这两个:

event.preventDefault()

event.stopPropagation();

最后,你需要测试以确保点击的元素不是<a>;所以你的代码看起来像这样:

这是一个代码,它演示了这个:

event.preventDefault();

© www.soinside.com 2019 - 2024. All rights reserved.