jQueryでdelegateが使用する問題

1578 ワード

bindに慣れて、ライブに慣れて、delegateに慣れなくなったよ有木有...
動的に生成されるラベル要素のバインドイベントをサポートするのはliveとdelegateかもしれませんが、新しいバージョンではliveはサポートされていません.delegateだけです.
delegateは本当に特殊ですね.他のイベントにバインドされているスタイルとは違います.
前のbindスタイルに慣れたから..つまずく
簡単に言えば油断です.
delegate()メソッドは、指定した要素(選択された要素に属するサブ要素)に1つ以上のイベントハンドラを追加し、これらのイベントが発生したときに実行される関数を規定します.
delegate()メソッドを使用するイベントハンドラは、スクリプトによって作成された新しい要素など、現在または将来の要素に適用されます.
構文

$(selector).delegate(childSelector,event,data,function)

パラメータ
説明
childSelector
必要です.イベントハンドラを追加する1つ以上のサブ要素を指定します.
event
必要です.要素にアタッチされる1つ以上のイベントを指定します.複数のイベント値をスペースで区切ります.有効なイベントでなければなりません.
data
オプション.関数に渡される追加データを指定します.
function
必要です.イベントが発生したときに実行される関数を指定します.
例えばこの小さなコードは





$(document).ready(function(){
 $("div").delegate("button","click",function(){
  $("p").slideToggle();
 });
});





わたしはいつも書き上げている

$(document).ready(function(){
 $("div").delegate($("button"),"click",function(){
  $("p").slideToggle();
 });
});

サブセレクタを選択する必要はありません..
さもないと私のように知らないエラーが発生します(クリックするとclickがトリガーされますが、他の要素をクリックしてもclickがトリガーされます...)
以上が本文のすべてですが、お好きになってください.