取消HTML锚标记上的冒泡
Cancel bubbling on an HTML anchor tag
我的网页设置如下
<div id="clickable">
<a href="hello.com">Here!</a>
</div>
是否有一种方法可以用来避免触发div的单击事件。我认为这与在锚标记的onclick
属性中设置一些东西有关,但尝试简单的事情,如e.preventDefault()
没有工作。
帮助吗?谢谢!
e.preventDefault();在onclick属性中不起作用,因为e没有定义。还e.preventDefault ();如果你想停止冒泡,你需要e.p stoppropagation ();
要么使用;
onclick="$(this).stopPropagation();"
,或者
$(a).click(function(e){
e.stopPropagation();
});
基于接受答案的香草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>
e.preventDefault()
不能阻止事件冒泡。您需要添加e.stopPropagation()
,或者替换为return false
。
你可以使用onclick="return false;"
<a href="#" onclick="return false;">stuff</a>
您可以使用return false;
或确保您的函数使用e
作为参数
$("#clickable a").click(function(e){
//stuff
e.preventDefault;
});
接受的答案需要jQuery。要在普通Javascript中实现内联,可以使用全局对象(window)的event属性,所有主流浏览器都支持该属性。在引用window.
的属性时,可以省略它。
<a href="https://stackoverflow.com" onclick="event.stopPropagation()">
Mozilla文档将此属性的状态描述为已弃用,但WhatWG只是说强烈鼓励开发人员使用下面的替代方法。下面是官方认可的方式:
<a id="mylink" href="https://stackoverflow.com">
<script>
document.getElementById('mylink').addEventListener('click', evt => {
evt.stopPropagation()
})
</script>
认真呢?我已经做出了选择。你也可以。
最好的做法是注册一个事件处理程序,但如果您只想做一些非常简单的事情,请这样做:
<a href="hello.com" onclick="event.stopPropagation()">Here!</a>
- 如何防止在html中模糊(焦点丢失)时取消选择所选文本
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 如何使用javascript/jQuery选中/取消选中HTML CheckBoxFor
- 在某些浏览器中,jquery.html()正在取消转义html字符
- 在 JavaScript 中准确取消转义 HTML 实体
- 屏蔽和取消屏蔽 html 中的输入文本
- 如何通过JavaScript动态选中/取消选中html复选框
- HTML 按钮在单击后不会取消选择
- 为什么使用替换来取消转义 html 标签也会去除所有其他 html 标签
- 取消选中带有标签的 html 复选框
- 在单击 HTML 按钮时取消隐藏 ASP 按钮
- 如何'取消缓存'当用户离开页面时,ajax加载了html
- 在etherpad-lite中取消屏蔽HTML
- 取消(重置html)按钮不起作用
- 如何创建重定向到URL的HTML“取消”按钮
- 如何在选中和取消选中时为html中的复选框分配值
- 如何使用javascript选中/取消选中ListView中的所有HTML复选框
- 将HTML复选框与元素链接以在取消选中复选框时隐藏
- CSS/HTML:鼠标按下取消
- AngularJs.是否可以通过单击取消选择HTML“无线电”输入