バインド関数をいつ使用する必要があるのか、jqueryでデリゲート関数をいつ使用する必要があるのかを知りたいです。彼らは同じ機能を実行しませんか?違いはなんですか?
1 に答える
イベントリスナーをバインドする既存の要素がいくつかbind
ある場合は、(または、on
非bind
推奨になっているように、@ Yoshiによって示されているように)使用します。処理する要素がまだ存在しない場合(たとえば、動的に生成され、作成する新しい要素ごとにハンドラーをバインドしたくないが、デリゲートを配置できる共通の親がある場合)に使用します。共通の親を持つ多くの要素でイベントを処理している場合(これは、各要素に個別のハンドラーを使用するよりも、親にデリゲートを使用する方が効率的です)。delegate
DOMイベントはDOM階層をバブルonclick
アップするため、要素をクリックすると、その要素のハンドラーがトリガーされ、次にその親のハンドラー、次にその親などがトリガーされます(ハンドラーがstopPropagation
イベントを呼び出して、それ以上のバブルアップがキャンセルされない限り) bind
。/を使用する場合はon
、処理する特定の要素にハンドラーをアタッチします。ハンドラーは、設定したターゲットによって直接トリガーされます。delegate
、jQuery内部ハンドラーは、指定した要素にアタッチされ、バブルチェーンを上る途中でイベントをキャッチします。次に、jQueryは、実際のターゲット(ハンドラーがアタッチされている要素の子)が委任で指定したセレクターと一致するかどうかを確認し、一致する場合は呼び出されます(実際のハンドラーがアタッチされているかのように呼び出されます)。親要素ではなくターゲット要素に。@shannonで示されます)。