如何使用jQuery区分鼠标左键和右键点击

如何使用jQuery获取单击的鼠标按钮?

$('div').bind('click', function(){
    alert('clicked');
});

这是由右键和左键点击触发的,有什么方法能够捕捉到鼠标右键点击?如果存在如下内容,我会很高兴:

$('div').bind('rightclick', function(){ 
    alert('right mouse button is pressed');
});

答案 1

从jQuery版本1.1.3开始,规范化,因此您不必担心浏览器兼容性问题。关于事件的文档。event.whichevent.keyCodeevent.charCode

event.which将分别为鼠标左键、中键和右键提供 1、2 或 3,因此:

$('#element').mousedown(function(event) {
    switch (event.which) {
        case 1:
            alert('Left Mouse button pressed.');
            break;
        case 2:
            alert('Middle Mouse button pressed.');
            break;
        case 3:
            alert('Right Mouse button pressed.');
            break;
        default:
            alert('You have a strange Mouse!');
    }
});

答案 2

编辑:我将其更改为适用于jQuery 1.7或更高版本中的动态添加元素:.on()

$(document).on("contextmenu", ".element", function(e){
   alert('Context Menu event has fired!');
   return false;
});

演示:jsfiddle.net/Kn9s7/5

[原帖开始]这对我有用:

$('.element').bind("contextmenu",function(e){
   alert('Context Menu event has fired!');
   return false;
}); 

如果您喜欢多种解决方案,^^

编辑:Tim Down提出了一个很好的观点,即它并不总是会触发事件,而且当上下文菜单键被按下时也是如此(这可以说是一个right-clickcontextmenuright-click)