在尝试使用jquery检测到鼠标右键时,我注意到点击事件处理程序似乎没有通过鼠标右键单击触发,而mousedown或mouseup事件处理程序则执行此操作。
例如,在右键单击测试div后,以下警告“测试!”:
$('#test').mousedown(function(e) {
alert('testing');
});
但是,以下 不 :
$('#test').click(function(e) {
alert('testing!');
});
有谁知道为什么?
答案 0 :(得分:12)
当你mousedown时,偶数被解雇了event.which
从这里采取:How to distinguish between left and right mouse click with jQuery
$('#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');
}
});
因此,不要使用.click(),而是使用mousedown并检查案例。
答案 1 :(得分:8)
答案 2 :(得分:0)
不确定您使用哪种浏览器,但根据MSDN onclick会在用户点击左鼠标按钮时触发“。即,根据定义,右击(或中间)点击不会出现这种情况。鉴于MSDN上的情况,无论其他浏览器做什么,您都可以期待IE以这种方式运行。
(Onclick还可以触发某些非鼠标内容,例如使用键盘更改某些表单元素等)。
我知道jQuery会尝试规范浏览器之间的行为,但是如果浏览器根本没有触发事件......
我知道至少有一个jQuery插件实现了右键单击:http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/(我没有使用它,但它看起来不错,只是它注意到Opera不支持它)。
答案 3 :(得分:0)
我还尝试使用以下代码来捕获某些元素类的鼠标右键
$(".brick").mousedown(function (event) {
if (event.which === 3) {
currentRightClickedTileID = $(this).attr("id");
}
});
此代码并不总能捕获右键。