你如何使用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');
});
从 jQuery 1.1.3 版开始,event.which
规范化event.keyCode
,event.charCode
因此您不必担心浏览器兼容性问题。文档event.which
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!');
}
});
编辑:我将其更改为适用于.on()
在 jQuery 1.7 或更高版本中使用的动态添加元素:
$(document).on("contextmenu", ".element", function(e){
alert('Context Menu event has fired!');
return false;
});
[原帖开始] 这对我有用:
$('.element').bind("contextmenu",function(e){
alert('Context Menu event has fired!');
return false;
});
如果您有多种解决方案 ^^
编辑:Tim Down 提出了一个很好的观点,即它并不总是会right-click
触发contextmenu
事件,而且在按下上下文菜单键时也是如此(这可以说是 a 的替代品right-click
)
您可以通过检查which
鼠标事件上的事件对象的属性来轻松判断按下了哪个鼠标按钮:
/*
1 = Left mouse button
2 = Centre mouse button
3 = Right mouse button
*/
$([selector]).mousedown(function(e) {
if (e.which === 3) {
/* Right mouse button was clicked! */
}
});
您还bind
可以contextmenu
和return false
:
$('selector').bind('contextmenu', function(e){
e.preventDefault();
//code
return false;
});
演示:http : //jsfiddle.net/maniator/WS9S2/
或者你可以制作一个快速插件来做同样的事情:
(function( $ ) {
$.fn.rightClick = function(method) {
$(this).bind('contextmenu rightclick', function(e){
e.preventDefault();
method();
return false;
});
};
})( jQuery );
演示:http : //jsfiddle.net/maniator/WS9S2/2/
使用.on(...)
jQuery >= 1.7:
$(document).on("contextmenu", "selector", function(e){
e.preventDefault();
//code
return false;
}); //does not have to use `document`, it could be any container element.
$("#element").live('click', function(e) {
if( (!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1) ) {
alert("Left Button");
}
else if(e.button == 2){
alert("Right Button");
}
});
更新事物的当前状态:
var $log = $("div.log");
$("div.target").on("mousedown", function() {
$log.text("Which: " + event.which);
if (event.which === 1) {
$(this).removeClass("right middle").addClass("left");
} else if (event.which === 2) {
$(this).removeClass("left right").addClass("middle");
} else if (event.which === 3) {
$(this).removeClass("left middle").addClass("right");
}
});
div.target {
border: 1px solid blue;
height: 100px;
width: 100px;
}
div.target.left {
background-color: #0faf3d;
}
div.target.right {
background-color: #f093df;
}
div.target.middle {
background-color: #00afd3;
}
div.log {
text-align: left;
color: #f00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="target"></div>
<div class="log"></div>