jQueryのイベント依頼方法bind、live、delegate、onの違いは何ですか?

1775 ワード

(1)、bind【jQuery 1.3以前】定義と使用法:主に選択した要素に特定のイベントタイプをバインドするためのリスニング関数;
構文:bind(type,[data],function(eventObject);
特徴:
(1)、ページ要素の静的バインドに適用する.呼び出されたときにすでに存在する要素バインドイベントのみを与え、将来追加される要素バインドイベントを与えることはできません.
(2)、ページのロードが完了するとbind()ができるので、効率の問題が発生する可能性があります.
例は以下の通りである:$("#members li a").bind( “click”, function( e ) {} );
(2)、live【jQuery 1.3以降】定義と使用法:主に選択した要素に特定のイベントタイプのリスニング関数をバインドするために使用される.
文法:live(type,[data],fn);
特徴:
(1)、liveメソッドはリスナーを自分(this)にバインドするのではなく、thisにバインドする.contextが上がった.
(2)、liveはイベント依頼メカニズムを利用してイベントの傍受処理を完了し、ノードの処理をdocumentに依頼し、新たに追加した要素はもう一度リスナーをバインドする必要はない.
(3)、live()メソッドを使用するが、直接選択した要素の後ろに置くしかなく、階層が比較的深い、接尾辞のDOM遍歴メソッドの後ろに使用することはできない、すなわち(「u l」「).l i v e........」である.live...はい、でも("ul"").live...いいですが("body").find("ul").live...だめです;
例は以下の通りである:$(document).on( “click”, “#members li a”, function( e ) {} );
(3)、delegate【jQuery 1.4.2導入】定義と使用法:傍受イベントを近い親要素にバインドする
構文:delegate(selector,type,[data],fn)
特徴:
(1)、イベントがより速く泡立ち、最初の時間に処理できるため、近い親要素を選択する.
(2)、より精確な小範囲でイベントエージェントを使用する、性能が優れている.live().動的に追加された要素で使用できます.
例は次のとおりです.
$("#info_table").delegate("td","click",function(){/*      */});

$("table").find("#info").delegate("td","click",function(){/*      */});

(4)、on【1.7バージョンは、以前の3つの方法の新しいイベントバインドメカニズムを統合している】定義と使用法:リスニングイベントを指定要素にバインドする.
構文:on(type,[selector],[data],fn)
例は以下の通りである:$("#info_table").on(「click」,「td」,function(){/詳細を表示/});パラメータの位置の書き方はdelegateとは違います.
説明:onメソッドは現在JQueryが推奨しているイベントバインドメソッドであり、1回だけ実行して関数を削除するメソッドを追加するのはone()である.
まとめ:bind(), .live(), .delegate(),.on()がそれぞれ対応する逆イベントは以下の通りである.unbind(),.die(), .undelegate(),.off()