Jquery:检测是否单击了鼠标中键或右键,如果是,请执行以下操作:

时间:2010-10-24 08:00:09

标签: jquery click live keycode right-mouse-button

查看我的jsfiddle demo,如果e.which == 1,那么当您左键单击h2时它会 e.which == 2e.which == 3然后它就无法运作。 2是鼠标中键,3是鼠标右键。我也发现了这个:

JQuery提供了一个e.which属性,分别为左键,中键和右键单击返回1,2,3。所以你也可以使用if(e.which == 3){alert(“right click”); }

此代码无效:

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

3 个答案:

答案 0 :(得分:24)

您可能想要捕获mousedown事件,并且还需要阻止oncontextmenu事件在右键单击事件期间停止上下文菜单。

$("h2").live('mousedown', function(e) { 
   if( (e.which == 1) ) {
     alert("left button");
   }if( (e.which == 3) ) {
     alert("right button");
   }else if( (e.which == 2) ) {
      alert("middle button"); 
   }
   e.preventDefault();
}).live('contextmenu', function(e){
   e.preventDefault();
});

答案 1 :(得分:2)

我注意到过去使用点击事件时除了常规的左键单击之外还有一些奇怪之处。我不记得细节,但如果你将“点击”改为“mousedown”或“mouseup”,你应该有更好的结果。

答案 2 :(得分:1)

  

现在button已被犯下了所有人的认可。根据W3C,它的值应该是:

     
      
  • 左键 - 0
  •   
  • 中键 - 1
  •   
  • 右键 - 2
  •   
     

根据微软的说法,它的价值应该是:

     
      
  • 左键 - 1
  •   
  • 中键 - 4
  •   
  • 右键 - 2
  •   
     

毫无疑问,微软的模式比W3C更好。 0应该表示“没有按下按钮”,其他任何东西都是不合逻辑的。

来自http://www.quirksmode.org/js/events_properties.html