Jquery: определить, нажата ли средняя или правая кнопка мыши, если это так, сделайте следующее:
Посмотрите мое демо jsfiddle, если e.which == 1
затем, когда вы щелкните левой кнопкой мыши на H2, он будет e.which == 2
или же e.which == 3
тогда это не сработает. 2 - средняя кнопка мыши, а 3 - правая кнопка мыши. я тоже нашел это:
JQuery предоставляет атрибут e.which, возвращающий 1, 2, 3 для левого, среднего и правого щелчка соответственно. Таким образом, вы также можете использовать if (e.which == 3) { alert("правой кнопкой мыши"); }
Этот код не работает:
код:
$("h2").live('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
3 ответа
Возможно, вы захотите перехватить событие mousedown, а также вам нужно запретить событие oncontextmenu, чтобы остановить всплывающее контекстное меню во время события щелчка правой кнопкой мыши.
$("h2").live('mousedown', function(e) {
if( (e.which == 1) ) {
alert("left button");
}if( (e.which == 3) ) {
alert("right button");
}else if( (e.which == 2) ) {
alert("middle button");
}
e.preventDefault();
}).live('contextmenu', function(e){
e.preventDefault();
});
В прошлом я заметил некоторые странности с использованием события click для чего угодно, кроме обычного щелчка левой кнопкой мыши. Я не помню деталей, но если вы измените "click" на "mousedown" или "mouseup", у вас должны быть лучшие результаты.
Сейчас
button
был испорчен до неузнаваемости. Согласно W3C его значения должны быть:
- Левая кнопка - 0
- Средняя кнопка - 1
- Правая кнопка - 2
По мнению Microsoft, его значения должны быть:
- Левая кнопка - 1
- Средняя кнопка - 4
- Правая кнопка - 2
Без сомнения, модель Microsoft лучше, чем W3C. 0 должно означать "ни одна кнопка не нажата", все остальное нелогично.