JavaScript - event.which总是返回1悬停

时间:2015-06-19 14:10:03

标签: javascript jquery hover mouse mouseclick-event

我想悬停&amp;在<div>同时鼠标左键单击,但event.which始终返回1:

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

完整示例here on jsfiddle

mousedown有效但hover&amp; mouseover&amp; mouseenter总是返回1.

如果我将event.which替换为event.buttons,它会在Firefox上返回良好的结果,但我认为event.buttons与其他浏览器不兼容。

=&GT;这是一个错误吗?您是否有针对我的问题的任何浏览器兼容的替代解决方感谢

1 个答案:

答案 0 :(得分:1)

如果你想为所有浏览器处理它(即使我无法复制chrome上的问题),你可以使用全局标志并检查它:

$(document).on('mousedown', function(e){
    window.btnClicked = e.which;
}).on('mouseup', function(){
    window.btnClicked = undefined;
});

$('#element2').mouseenter(function(event) {
    switch (window.btnClicked) {
        case 1:  alert('Left Mouse pressed.');   break;
        case 2:  alert('Middle Mouse pressed.'); break;
        case 3:  alert('Right Mouse pressed.');  break;
        default: alert('You have a strange Mouse!');
    }
});