jQuery1.7では、.delegate()は.on()に置き換えられました。以前のバージョンと同様に、イベント委任の最も効率的な手段が引き続き使用されます。
イベント バインディングと委任では、delegate() 以降は通常同等です。
.delegate() は、指定された要素 (選択された要素の子要素) に 1 つ以上のイベント ハンドラーを追加し、これらのイベントが発生したときに実行する関数を指定します。
// jQuery 1.4.3
$( elements ).delegate( selector, events, data, handler );
// jQuery 1.7
$( elements ).on( events, [selector], data, handler );
例: .delegate() コード:
$("table ").delegate("td","click",function(){
alert("hello");
});
。 on() コード:
$("table ").on("click", " td", function() {
alert("hi");
});
追記: 2 つの違いは次のとおりです。セレクターとイベントの順序が異なる
デリゲートとonメソッド 選択された要素の子要素は「正当な」子要素である必要があります。たとえば、
$("table") .delegate("ボタン ","クリック",function(){...});
$("テーブル").on("クリック", "p", function(){...}) ;
は機能しません。通常の状況では、テーブルのサブ要素は tr、td...
on(events,[selector],[data],fn) であるはずです。 )、パラメーター [selector ] はオプションです。
フィルター イベントをトリガーするセレクター要素の子孫として使用されるセレクター文字列。
例:
$(" table").on("click", ".td1", function() {
alert("hi");
});
テーブルのサブ要素を以下でフィルタリングしますclass td1
デリゲートのセレクターは必須です。