使用中点击触发onclick事件

我正在使用哈希链接的onclick事件来打开<div>作为popup窗口。 但是,中间点击不会触发onclick事件 ,只会将链接的href属性值加载到新页面中。 我怎样才能用中键打开<div>作为popup窗口?

请求'的答案是正确的,但它听起来像要防止中间点击的默认行为。 在这种情况下,请包括以下内容

 $("#foo").on('click', function(e) { if( e.which == 2 ) { e.preventDefault(); alert("middle button"); } }); 

preventDefault()将停止事件的默认操作。

您可以使用

event.button

以确定哪个鼠标button被点击。

返回一个整数值,指示更改状态的button。

  • 0为标准“点击”,通常是左键
  • 1为中间button,通常是车轮点击
  • 2为正确的button,通常是右键单击

请注意,Internet Explorer中不遵循此约定:有关详细信息,请参阅QuirksMode。

button的顺序可能会根据指针设备的configuration方式而有所不同。

还读

哪个鼠标button被点击了?

有两个属性可以找出哪个鼠标button被点击:哪个button。 请注意,这些属性并不总是在点击事件上工作。 要安全地检测鼠标button,您必须使用mousedown或mouseup事件。

正确的方法是使用.on ,因为.live已被弃用,然后从jQuery中删除

 $("#foo").on('click', function(e) { if( e.which == 2 ) { e.preventDefault(); alert("middle button"); } }); 

或者,如果你想“活”的感觉和#foo不在你的页面文档启动:

 $(document).on('click', '#foo', function(e) { if( e.which == 2 ) { e.preventDefault(); alert("middle button"); } }); 

原来的答案

jQuery在事件上提供了一个.which属性,使得点击buttonid从左到右为1,2,3。在这种情况下,你需要2。

用法:

 $("#foo").live('click', function(e) { if( e.which == 2 ) { alert("middle button"); } }); 

Adamantium的答案也将工作,但你需要留意IE浏览器,他注意到:

 $("#foo").live('click', function(e) { if((!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 2)) { alert("middle button"); } }); 

还要记住.button属性是0-索引,而不是1-indexed,就像.which

我知道我迟到了,但是对于那些在处理中间点击方面仍然有问题的人来说,请检查一下是否委托了这个活动。 在委派的情况下, click事件不会触发。 比较:

这适用于中间点击:

 $('a').on('click', function(){ console.log('middle click'); }); 

这不适用于中间点击:

 $('div').on('click', 'a', function(){ console.log('middle click'); }); 

如果您仍然需要使用事件代理来跟踪中间点击,那么唯一的方法就是使用mousedownmouseup 。 像这样:

这适用于委派的中间点击:

 $('div').on('mouseup', 'a', function(){ console.log('middle click'); }); 

在这里看到它 。

这个问题有点老,但我find了一个解决scheme:

 $(window).on('mousedown', function(e) { if( e.which == 2 ) { e.preventDefault(); } }); 

Chrome不会触发鼠标滚轮的“单击”事件

在FF和Chrome中工作

我通常讨厌人们提供替代scheme而不是解决scheme,但是由于解决scheme已经提供,我将打破我自己的规则。

中间点击function被覆盖的网站往往真的,真的让我烦恼。 我通常是中间点击,因为我想在新标签中打开新内容,同时对当前内容进行无阻碍的查看。 任何时候你都可以离开中间点击的function,并通过单击元素的HREF属性使相关的内容可用,我坚信你应该这样做。