3

可能重复:
如何用 jQuery 区分鼠标左键和右键

当我在 div 内单击鼠标右键时如何打开上下文菜单。因为当我在 div 内用鼠标右键单击时,它的淡出?

Javascript

$("#link").click(function(e){
   e.stopPropagation();
   div = $("#mydiv").fadeToggle(300);
});

$("#mydiv").click(function(e){
   e.stopPropagation();
});

$(document).click(function(e){
   $('#mydiv').fadeOut(200);
});

HTML

<a id="link">Click</a>
<div id="mydiv" style="width: 200px; height: 200px;">Hello</div>

更新:

Javascript

$("#link").click(function(e){
   e.stopPropagation();
   div = $("#mydiv").fadeToggle(300);
});

$("#good_buttom").click(function(e){
   e.stopPropagation();
   div = $("#hide").fadeToggle(300);
});

$("#mydiv").mousedown(function(e) {
switch (e.which) {
    case 1:
         e.stopPropagation();
         $('#mydiv').fadeOut(200);
        break;
    case 2:
        alert('2');
        break;
    case 3:
        alert('3');
        break;
    default:
        alert('You have a strange mouse');
}
});

HTML

<a id="link">Click</a>
<div id="mydiv" style="width: 200px; height: 200px;">
    <button id="good_button">Click IT</button>
    <div id="hide" style="display:none;">Show up.</div>
</div>
4

1 回答 1

3

click只能通过鼠标左键触发,而mousedown可以通过鼠标左/中/右键触发。因此,只需在您的代码中替换clickmousedown,并通过检查来区分左/中/右键单击event.which。请查看如何使用 jQuery 区分鼠标左键和右键单击以获取示例。

顺便说一句:检查此链接click可以帮助您了解,mousedownmouseup事件之间的关系。这篇文章:Javascript Madness:鼠标事件也许也有帮助。根据经验,当您需要对鼠标事件进行更多控制时,最好处理低级别事件,例如mousedownormouseup而不是高级事件,例如clickor 。dblclick

另一个问题是您mydiv在 HTML 中前面添加了一个多余的“#”。

更新:根据您的新要求,您可以添加以下代码以避免事件传播。

$("#good_button").mousedown(function(e) {
    e.stopPropagation(); // avoid triggering its parent
    div = $("#hide").fadeToggle(300);
});
于 2013-01-03T09:05:34.580 回答