1

E が「イベント」の略であることは知っていますが、なぜ E を使用する必要があるのか​​はまだわかりません。関数に他の文字を渡そうとしましたが、うまくいかないようでした。特定の文字を関数に渡す必要がある他の状況はありますか?

$("#myThing").click(function (e) {
   var hit = $(e.target);
   hit.css('color','blue');
});

これは同じことを行います:

$("#myThing").click(function () {
   $(this).css('color','blue');
});

$(this) と 'e' はいつ使用する必要がありますか?

ありがとうございました!

4

5 に答える 5

4

関数を介して特定の文字を渡す必要はありません。

$("#myThing").click(function (e) {
   var hit = $(e.target);
   hit.css('color','blue');
});

と同じです

$("#myThing").click(function (foo) {
   var hit = $(foo.target);
   hit.css('color','blue');
});

$(e.target)との違いは、イベントが関連付けられている要素であり、要素内にある場合でもクリックされた特定の要素である$(this)ため、非常に重要になる可能性があります。thise.targetthis

それが理にかなっていることを願っています

于 2012-06-15T14:38:09.743 に答える
2

名前eは無意味です。好きなように呼び出すことができます(明らかに、参照も更新する限りe)。

あなたが投稿したコードは、通常、同じことを行います。次のコードを参照してください。

​&lt;div><span>Hi</span></div>​​​​​​​​​​​​​​​​​​

JS:

​$('div').on('click', function (e) {
    alert(this === e.target);
});​​​​​

(ここで実行: http://jsfiddle.net/Dxbwm/ )

それが間違っていることがわかります。はイベントthisが処理されるe.target要素ですが、イベントの発生元の要素 (上記の例ではスパン) であるためです。イベントが以前にこのように機能することを知らなかった場合、これはイベント バブリングと呼ばれます。詳細については、こちらのブログを参照してください。

于 2012-06-15T14:38:15.407 に答える
1

2 つのスニペットには小さな違いがあります。最初のスニペットでは、要素は要素そのものhitではありませんでした。#myThing

#myThingそれが であり、その<p>のリンクをクリックしたとしましょう: イベントが に達すると、 によって参照される要素はリンクであり、段落ではありません。#myThinge.target

逆に、2 番目の例では、色が変更される要素は常に#myThing

したがって、イベントをハンドラーと一緒に渡すと、そのイベントを使用すると便利だからです。あなたがそれを渡すとき、あなたはそれをeまたはevtまたはまた名前を付けることができfoobarます:jQueryを使用しているので、選択した変数名は関係ありません(ただし、単純にするためeに短く、広く使用されています)。

通常、イベントをパスする最も一般的な理由は次のとおりです。

  1. イベントのデフォルトの動作を防ぎます。
  2. イベントの伝播を停止します。
  3. — それはあなたのシナリオです — イベントがトリガーされた元の要素を処理します (多くの場合、イベントの委任またはドキュメントのライブ更新を処理している場合)。
  4. イベント プロパティの一部を確認します (例: e.keycodeon keyup/downevent)。
于 2012-06-15T14:39:47.147 に答える
1

イベントは、データと共にデータを運ぶことができます (ドロップされたファイルなど)。イベントに属するデータを参照する必要がある場合は、「e」を使用します。イベントがトリガーされた要素 (イベント コールバックで「this」が参照する要素) のみを参照する必要がある場合は、「this」を使用します。

于 2012-06-15T14:38:42.490 に答える
1

この場合event.target、 とthisは同じ要素を参照しています。ただし、jQueryイベント委任を使用すると、一致しない場合があります。

$('body').on('click', 'tr', function(event) { ... });

Hereevent.targetは、イベントがトリガーされた要素 (たとえば、'td' 要素またはその子要素)thisを参照しますが、要素を参照しtrます。両方あると便利な場合もあります。)

その上、はい、イベント オブジェクトには他にもいくつかの用途があります。これを使用すると、イベントの伝播を停止することができます。

于 2012-06-15T14:40:54.337 に答える