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