14

私のjsfiddleデモをチェックしてください。h2e.which == 1を左クリックすると動作する e.which == 2か、動作しませんe.which == 3。2 はマウスの中ボタン、3 はマウスの右ボタンです。私もこれを見つけました:

JQuery は e.which 属性を提供し、左クリック、中央クリック、右クリックに対してそれぞれ 1、2、3 を返します。したがって、 if (e.which == 3) { alert("right click"); を使用することもできます。}

このコードは機能していません:

コード:

    $("h2").live('click', function(e) { 
   if( e.which == 2 ) {
      e.preventDefault();
      alert("middle button"); 
   }
});
4

3 に答える 3

24

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();
});

更新: .live()はjQuery 1.9から非推奨になりました。代わりに.on()を使用してください。

$("h2").on('mousedown', function(e) { 
  if (e.which == 1) {
    alert("left button");
  } else if (e.which == 3) {
    alert("right button");
  } else if (e.which == 2) {
    alert("middle button");
  }
  e.preventDefault();
});
于 2010-10-24T09:10:29.413 に答える
2

通常の左クリック以外の目的でクリック イベントを使用することに関して、過去にいくつかの奇妙な点に気付きました。詳細は覚えていませんが、「クリック」を「マウスダウン」または「マウスアップ」に変更すると、より良い結果が得られるはずです。

于 2010-10-24T08:38:12.773 に答える
1

button、すべての認識を超えて汚されています。W3Cによると、その値は次のようになります。

  • 左ボタン– 0
  • 中央のボタン– 1
  • 右ボタン– 2

Microsoftによると、その値は次のようになります。

  • 左ボタン– 1
  • 中央のボタン– 4
  • 右ボタン– 2

間違いなく、MicrosoftモデルはW3Cモデルよりも優れています。0は「ボタンが押されていない」ことを意味する必要があり、それ以外は非論理的です。

http://www.quirksmode.org/js/events_properties.htmlから

于 2011-07-17T09:15:36.863 に答える