Sin*_*nan 567 javascript jquery right-click javascript-events
如何使用jQuery获取单击的鼠标按钮?
$('div').bind('click', function(){
alert('clicked');
});
Run Code Online (Sandbox Code Playgroud)
这是由左右键单击触发的,能够捕获鼠标右键的方式是什么?如果存在以下内容,我会很高兴:
$('div').bind('rightclick', function(){
alert('right mouse button is pressed');
});
Run Code Online (Sandbox Code Playgroud)
Aco*_*orn 885
从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!');
}
});
Run Code Online (Sandbox Code Playgroud)
Jef*_*nes 249
编辑:我将其更改为适用.on()于jQuery 1.7或更高版本中使用的动态添加元素:
$(document).on("contextmenu", ".element", function(e){
alert('Context Menu event has fired!');
return false;
});
Run Code Online (Sandbox Code Playgroud)
[原始帖子的开头]这对我有用:
$('.element').bind("contextmenu",function(e){
alert('Context Menu event has fired!');
return false;
});
Run Code Online (Sandbox Code Playgroud)
如果你进入多个解决方案^^
编辑:Tim Down提出了一个很好的观点,它并不总是会right-click触发contextmenu事件,而且当按下上下文菜单键时(这可以说是一个替代right-click)
Rus*_*Cam 83
您可以通过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! */
}
});
Run Code Online (Sandbox Code Playgroud)
Nea*_*eal 38
你也bind可以contextmenu和return false:
$('selector').bind('contextmenu', function(e){
e.preventDefault();
//code
return false;
});
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/maniator/WS9S2/
或者你可以制作一个同样的快速插件:
(function( $ ) {
$.fn.rightClick = function(method) {
$(this).bind('contextmenu rightclick', function(e){
e.preventDefault();
method();
return false;
});
};
})( jQuery );
Run Code Online (Sandbox Code Playgroud)
演示: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.
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/maniator/WS9S2/283/
The*_*iot 30
$("#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");
}
});
Run Code Online (Sandbox Code Playgroud)
更新当前状态:
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");
}
});Run Code Online (Sandbox Code Playgroud)
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;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="target"></div>
<div class="log"></div>Run Code Online (Sandbox Code Playgroud)
Esa*_*ija 18
$.event.special.rightclick = {
bindType: "contextmenu",
delegateType: "contextmenu"
};
$(document).on("rightclick", "div", function() {
console.log("hello");
return false;
});
Run Code Online (Sandbox Code Playgroud)
Kon*_*nev 15
有很多非常好的答案,但我只是想在使用时触及IE9和IE <9之间的一个主要区别event.button.
根据旧的Microsoft规范,event.button代码与W3C使用的规范不同.W3C仅考虑3个案例:
event.button === 1event.button === 3event.button === 2在较旧的Internet Explorer中,微软在按下按钮时略微翻了一下,有8种情况:
event.button === 0或000event.button === 1或001event.button === 2或010event.button === 3或011event.button === 4或100event.button === 5或101event.button === 6或110event.button === 7或111尽管事实上这在理论上应该如何工作,但是没有Internet Explorer支持同时按下两个或三个按钮的情况.我提到它是因为W3C标准在理论上甚至不能支持这一点.
在我看来,对TheVillageIdiot的回答略有改动会更清晰:
$('#element').bind('click', function(e) {
if (e.button == 2) {
alert("Right click");
}
else {
alert("Some other click");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:JQuery提供一个e.which属性,分别为左,中,右三次返回1,2,3.所以你也可以使用if (e.which == 3) { alert("right click"); }
另请参阅:"使用中键单击触发onclick事件"的答案
| 归档时间: |
|
| 查看次数: |
353629 次 |
| 最近记录: |