0

dom 要素への実際の dom 参照があり、その dom 参照にイベントを委譲したいというシナリオがあります。

var domRef = $('.selector');
// I want something like this.
$(document).on('click', domRef, function() {

});

上記のコードでこのように使用しても意味がないことはわかっていますが、そのような機能が必要な場合に使用されます。そのような慣行に従う理由について議論することなく、解決策を提供していただければ幸いです。

4

2 に答える 2

2

委任を手動で処理するだけです。

var domRef = $('.selector');

$(document).on('click', function(e) {
    // test if the click target is the same as your domRef
    if ($(e.target).is(domRef)) {
        // do special stuff for this node
    }
});
于 2013-01-02T20:59:30.107 に答える
1

のドキュメントから.on()

.on( events [, selector] [, data], handler(eventObject) )

セレクター:イベントをトリガーする選択された要素の子孫をフィルター処理するためのセレクター文字列。セレクターが指定されているnullか省略されている場合、イベントは選択された要素に到達したときに常にトリガーされます。

selector文字列である必要があります。そうでない場合は、パラメータと見なされますdataこれは、のソース コードを見ることで確認できます。.on()

回避策として、次のようなことが考えられます。

var $domRef = $('.selector');
$(document).on('click', function(evt) {
  if($domRef.is(evt.target)) {
    ...
  }
});

とはいえ、性能的にはあまり良くありません。

于 2013-01-02T21:02:08.877 に答える