如何使用jQuery获得鼠标点击按钮?
$('div').bind('click', function(){
alert('clicked');
});
这是由右键和左键点击触发的,有什么方法可以捕捉到鼠标右键点击?如果存在以下内容,我会很高兴:
$('div').bind('rightclick', function(){
alert('right mouse button is pressed');
});
如何使用jQuery获得鼠标点击按钮?
$('div').bind('click', function(){
alert('clicked');
});
这是由右键和左键点击触发的,有什么方法可以捕捉到鼠标右键点击?如果存在以下内容,我会很高兴:
$('div').bind('rightclick', function(){
alert('right mouse button is pressed');
});
当前回答
有很多非常好的答案,但我只想谈谈IE9和IE < 9在使用event.button时的一个主要区别。
根据旧的微软事件规范。按钮的代码与W3C使用的代码不同。W3C只考虑3种情况:
点击鼠标左键-事件。按钮=== 1 单击鼠标右键-事件。按钮=== 3 鼠标中间按钮被单击-事件。按钮=== 2
然而,在老式的ie浏览器中,微软会为按下的按钮翻转一些,有8种情况:
没有按钮被点击-事件。按钮=== 0或000 左键被点击-事件。按钮=== 1或001 单击右键-事件。按钮=== 2或010 单击左右按钮-事件。按钮=== 3或011 中间按钮被单击-事件。按钮== 4或100 中间和左边的按钮被单击-事件。按钮== 5或101 中间和右边的按钮被单击-事件。按钮== 6或110 所有3个按钮都被单击-事件。按钮== 7或111
尽管理论上它应该是这样工作的,但没有任何ie浏览器支持同时按下两个或三个按钮的情况。我之所以提到它,是因为W3C标准甚至在理论上不支持这一点。
其他回答
$("body").on({
click: function(){alert("left click");},
contextmenu: function(){alert("right click");}
});
$.event.special.rightclick = {
bindType: "contextmenu",
delegateType: "contextmenu"
};
$(document).on("rightclick", "div", function() {
console.log("hello");
return false;
});
http://jsfiddle.net/SRX3y/8/
你可以试试下面的代码:
event.button
返回值:一个数字,表示鼠标事件发生时按下的鼠标按钮。
可能的值:
0:鼠标左键 1:车轮按钮或中间按钮(如果有) 2:鼠标右键 注意:ie8及更早版本有不同的返回值:
1:鼠标左键 2:鼠标右键 4:滚轮按钮或中间按钮(如果有的话)注意:对于左侧配置的鼠标,返回值颠倒
有很多非常好的答案,但我只想谈谈IE9和IE < 9在使用event.button时的一个主要区别。
根据旧的微软事件规范。按钮的代码与W3C使用的代码不同。W3C只考虑3种情况:
点击鼠标左键-事件。按钮=== 1 单击鼠标右键-事件。按钮=== 3 鼠标中间按钮被单击-事件。按钮=== 2
然而,在老式的ie浏览器中,微软会为按下的按钮翻转一些,有8种情况:
没有按钮被点击-事件。按钮=== 0或000 左键被点击-事件。按钮=== 1或001 单击右键-事件。按钮=== 2或010 单击左右按钮-事件。按钮=== 3或011 中间按钮被单击-事件。按钮== 4或100 中间和左边的按钮被单击-事件。按钮== 5或101 中间和右边的按钮被单击-事件。按钮== 6或110 所有3个按钮都被单击-事件。按钮== 7或111
尽管理论上它应该是这样工作的,但没有任何ie浏览器支持同时按下两个或三个按钮的情况。我之所以提到它,是因为W3C标准甚至在理论上不支持这一点。
事件。which === 1确保它是一个左键点击(当使用jQuery时)。
但您还应该考虑修改器键:ctrlcmdshiftalt
如果你只对捕捉简单的、未修改的左键点击感兴趣,你可以这样做:
var isSimpleClick = function (event) {
return !(
event.which !== 1 || // not a left click
event.metaKey || // "open link in new tab" (mac)
event.ctrlKey || // "open link in new tab" (windows/linux)
event.shiftKey || // "open link in new window"
event.altKey // "save link as"
);
};
$('a').on('click', function (event) {
if (isSimpleClick(event)) {
event.preventDefault();
// do something...
}
});