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");
});
テーブルの子要素をクラスでフィルタリングするtd1
デリゲートのセレクターは必須です。