为什么用.click()不会触发右键单击?

时间:2012-01-09 16:33:15

标签: javascript jquery

This是一个简单的代码:

HTML

<a id="link" href="#">Ciao</a>

的jQuery

$('#link').click(function () {
    alert("ciao");
});

实际上,左/中键被触发(打印警报)但右键点击?为什么不?我怎么能触发它?

5 个答案:

答案 0 :(得分:8)

绑定mousedown以处理左键,中键和右键:

$('#link').mousedown(function(e) {
   alert("ciao");
});

您可以使用e.which来确定点击了哪个按钮。 1:左,2:中间和3:右。

以下是演示:http://jsfiddle.net/fPhDg/9/


您可以阻止上下文菜单显示如下:

$('#link').contextmenu(false);

演示:http://jsfiddle.net/y4XDt/

你应该非常小心地使用它!它只在一些非常罕见的情况下才有意义。

答案 1 :(得分:4)

使用.contextmenu(...)

$('#link').contextmenu(function () {
    alert("ciao");
});

如果您想捕获这两个事件,可以使用bind(...)函数:

$('#link').bind('click contextmenu',function()
{
    alert("ciao");
});

http://jsfiddle.net/fPhDg/4/

答案 2 :(得分:2)

您可以订阅click事件和contextmenu事件,如下所示:

$('#link').on('click contextmenu', function (e) {
  if (e.which === 3) {
    // Right mousebutton was clicked
    // 1 is left mousebutton
    // 2 is centre mousebutton
  }
});

答案 3 :(得分:1)

试试这个......

$('#link').mousedown(function (event) {
    if(event.which === 1)
    alert("left click");
    if(event.which === 2)
    alert("center click");
    if(event.which === 3)
    alert("right clikc");
});

小提琴:http://jsfiddle.net/fPhDg/8/

答案 4 :(得分:0)

你可以像这样捕捉鼠标右键:

<head>
<script>
function whichButton(event)
{
if (event.button==2)
  {
  alert("You clicked the right mouse button!");
  }
else
  {
  alert("You clicked the left mouse button!");
  }
}
</script>
</head>

<body onmousedown="whichButton(event)">
<p>Click in the document. An alert box will alert which mouse button you clicked.</p>
</body>