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 должно означать "ни одна кнопка не нажата", все остальное нелогично.

С http://www.quirksmode.org/js/events_properties.html

Другие вопросы по тегам