JQuery: определить, нажата ли нажата средняя или правая кнопка мыши, если да, сделайте следующее:
Проверьте мой jsfiddle demo, если 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");
}
});
Ответы
Ответ 1
Возможно, вам захочется уловить событие 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();
});
Ответ 2
Я заметил некоторые странности в прошлом с использованием события click для чего-либо, кроме обычного щелчка левой кнопкой мыши. Я не помню подробностей, но если вы измените "click" на "mousedown" или "mouseup", у вас должны быть лучшие результаты.
Ответ 3
Теперь button
был заглушен вне всякого распознавания. Согласно W3C его значения должны быть:
- Левая кнопка - 0
- Средняя кнопка - 1
- Правая кнопка - 2
Согласно Microsoft, ее значения должны быть:
- Левая кнопка - 1
- Средняя кнопка - 4
- Правая кнопка - 2
Без сомнения, модель Microsoft лучше, чем W3C. 0 должно означать "ни одна кнопка не нажата", все остальное нелогично.
Из http://www.quirksmode.org/js/events_properties.html