jQuery イベントのどのプロパティ

jQuery event.which 属性详解 - 获取键盘和鼠标按键代码

この記事では、jQuery の `event.which` 属性について詳しく解説します。`event.which` を使用して、ユーザーが押したキーボードのキーやマウスのボタンのコードを取得する方法を学び、実際の使用例を紹介します。

1. jQuery event.which 属性とは?

`event.which` 属性は、jQuery のイベントオブジェクトのプロパティであり、イベントをトリガーしたキーボードのキーまたはマウスのボタンのコードを取得するために使用されます。 jQuery 1.3 以降、`event.which` は非推奨となりましたが、依然として広く使用されており、キーボードやマウスのイベントを処理する際に非常に役立ちます。

2. event.which の用途

`event.which` 属性は、主に次の 2 つの状況で使用されます。

  • **キーボードのキーコードの取得:** keypress、keydown、keyup などのキーボードイベントでは、`event.which` は押されたキーボードのキーの ASCII 文字コードを返します。
  • **マウスのボタンコードの取得:** click、mousedown、mouseup などのマウスイベントでは、`event.which` はクリックされたマウスのボタンのコードを返します。

3. event.which の戻り値

  • **キーボードイベント:** `event.which` は、キーの ASCII 文字コードを返します。たとえば、Enter キーは 13、A キーは 65 を返します。
  • **マウスイベント:** `event.which` は、異なるマウスボタンに対して異なるコードを返します。
    • 左ボタン:1
    • 中ボタン:2
    • 右ボタン:3

4. event.which の使用例

以下は、`event.which` 属性を使用する例です。

例 1: Enter キーが押されたかどうかを検出する


<input type="text" id="myInput">
<script>
  $("#myInput").keypress(function(event) {
    if (event.which == 13) {
      // ユーザーが Enter キーを押しました
      // フォームの送信など、適切なアクションを実行します
      alert("Enterキーが押されました!");
    }
  });
</script>

例 2: マウスの左クリックと右クリックを区別する


<div id="myDiv">クリックしてください</div>
<script>
  $("#myDiv").mousedown(function(event) {
    if (event.which == 1) {
      // ユーザーがマウスの左ボタンをクリックしました
      alert("左クリック!");
    } else if (event.which == 3) {
      // ユーザーがマウスの右ボタンをクリックしました
      alert("右クリック!");
    }
  });
</script>

5. 代替案

`event.which` はまだ使用できますが、以下の代替案を使用することをお勧めします。

  • `event.key` および `event.code`:より読みやすいキーボードキーの識別子を取得します。
  • `event.button`:より信頼性の高いマウスボタン情報を取得します。詳細については、MouseEvent.button - Web API | MDN を参照してください。

6. まとめ

`event.which` 属性は、キーボードやマウスのボタンコードを取得するための簡単な方法を提供します。非推奨にはなりましたが、イベント処理を理解し、古いコードをメンテナンスするためには依然として重要です。新しいプロジェクトでは、よりモダンな代替案を使用することをお勧めします。

jQuery event.which 属性に関するQ&A

Q1: `event.which` は、すべてのブラウザでサポートされていますか?

A1: いいえ、`event.which` は、Internet Explorer 9 以前のバージョンでは完全にサポートされていません。また、jQuery 1.3 以降では非推奨となっているため、新しいプロジェクトでは、`event.key`、`event.code`、`event.button` などの代替案を使用することをお勧めします。

Q2: `event.which` と `event.keyCode` の違いは何ですか?

A2: `event.keyCode` もキーボードのキーコードを取得するために使用されますが、非推奨となっています。`event.which` は、jQuery によって正規化されたプロパティであり、異なるブラウザ間でより一貫性のある動作を提供します。ただし、`event.which` も非推奨となっているため、`event.key` や `event.code` を使用することをお勧めします。

Q3: モバイルデバイスでは、`event.which` はどのように動作しますか?

A3: モバイルデバイスでは、キーボードやマウスイベントの動作が異なる場合があります。`event.which` は、モバイルデバイスの一部のブラウザではサポートされていません。モバイルデバイスのタッチイベントを処理するには、`touchstart`、`touchmove`、`touchend` などのタッチイベントを使用することをお勧めします。