通过onclick里面禁用HREF

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过onclick里面禁用HREF相关的知识,希望对你有一定的参考价值。

如果在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>
答案

点击仍然向上冒泡。请改用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>
另一答案

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

另一答案

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

你需要这两个:

event.preventDefault()

event.stopPropagation();

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

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

event.preventDefault();

以上是关于通过onclick里面禁用HREF的主要内容,如果未能解决你的问题,请参考以下文章

如何启用禁用的文本框 onclick 使用角度的按钮

Android - 禁用 ListView 选择突出显示但保持启用 OnClick [重复]

设置onclick侦听器在android中无法从一个片段移动到另一个活动[重复]

php怎么给按钮添加事件

如何禁用在android片段类中按下的后退按钮

如何处理片段中的onClick [重复]