以下代码取消了整个页面上的左键点击和中间点击:
<script> $(document).on('click',false) </script>
<a href="http://example.com">link</a>
此其他代码使用jquery委托事件取消A
元素的点击次数:
<script> $(document).on('click','a',false) </script>
<a href="http://example.com">link</a>
适用于左键单击,但如果您在中间单击该链接,则会打开一个新选项卡,这意味着该事件未被取消。
为什么使用第二个代码,中间点击不会被取消?
答案 0 :(得分:0)
jQuery明确禁止对委托事件进行非左键单击,如源代码第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 })