10

イベントリスナー内で使用する方が良い/速いですthisevent.target

私はこのようなコードを書いてきました(例はjQueryです):

jQuery('input').bind('keyup', function (e) {
 var j = jQuery(e.target);
 foo(j.attr('id') , j.val() );
});

そして、 「良い」からと交換e.targetするように言われました。thisどちらか一方に本当に利点はありますか?

委任されたイベントで機能するため、より一般的なソリューションであるため、ターゲットを使用します。テストがバインディングで乱雑になるため、ベンチマークに問題があります(ただし、明らかに、この場合、違いは小さすぎて問題になりません)

4

2 に答える 2

16

一方は他方よりも優れているわけではありませんが、異なることを行います。これは、イベントが関連付けられている要素を参照し、event.target はイベントを呼び出した要素です。

例えば

div id=foo   
   div id=bar

click が foo に付加され、bar がクリックされると、イベントは foo にバブルアップします。イベントでは、これはfooevent.targetbarに参照します

最終的には、どの要素を処理する必要があるかによって異なります。

api.jquery.com/event.target に、event.target を示す小さな例があります。その例を使用した小さなサンプルを次に示しますが、これも表示されます: http://jsbin.com/adifan/edit#javascript,html,live

于 2012-07-03T09:15:27.140 に答える
1

まあ、jQueryのドキュメントはそれについて明確です:-)

ターゲット プロパティは、イベントまたはその子孫に登録された要素です。イベントバブリングが原因でイベントが処理されているかどうかを判断するために、event.target をこれと比較すると便利なことがよくあります。このプロパティは、イベントがバブリングするときに、イベントの委任で非常に役立ちます。

(ソース: http://api.jquery.com/event.target/ )

このリンクでは、「イベント バブリング」という用語について説明しています: http://www.quirksmode.org/js/events_order.html

于 2012-07-03T09:15:09.517 に答える