javascript - jQuery 的委托(delegate)事件无法取消中键点击

标签 javascript jquery html dom-events event-propagation

以下代码取消整个页面的左键单击和中键单击:

<script> $(document).on('click',false) </script>
<a href="http://example.com">link</a>

此代码使用 jquery 委托(delegate)事件仅取消对 A 元素的点击:

<script> $(document).on('click','a',false) </script>
<a href="http://example.com">link</a>

左键单击效果很好,但如果您中键单击链接,则会打开一个新选项卡,这意味着事件未取消。

为什么使用第二个代码,中键点击没有被取消?

最佳答案

jQuery 明确禁止对委托(delegate)事件进行非左键单击,如源代码第 357 行所示: https://github.com/jquery/jquery/blob/1de834672959636da8c06263c3530226b17a84c3/src/event.js#L357

原因:
Firefox 不支持中键单击事​​件,因此他们决定禁止所有浏览器使用该功能。

作为解决方法,表达式

$(document).on('click','a',false)

可以转换为等价的功能

$(document).click(function(evt){ if($(evt.target).closest('a').length) return false })

关于javascript - jQuery 的委托(delegate)事件无法取消中键点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34537484/

相关文章:

javascript - 刷新页面后 jQuery 日期选择器不起作用

javascript - 更改开放层 3 中 ol.geom.LineString 的颜色

javascript - 我的 .html() 语法有什么问题?

jQuery .live ('click' ) 即使在禁用的按钮上也会触发

java - 前端有很多按钮的表格数据插入删除代码怎么写?

javascript - nginx 重写删除/index.html 并保留查询字符串和哈希值

jquery - Bootstrap X-可编辑、文本区域的清除按钮

javascript - jQuery 不能在 Firefox 上运行,但可以在 Chrome 上运行

javascript - 在 HTML 中向下滚动

javascript - 从 Google 电子表格中解析格式化文本