通过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的主要内容,如果未能解决你的问题,请参考以下文章
Android - 禁用 ListView 选择突出显示但保持启用 OnClick [重复]