0

バインド関数をいつ使用する必要があるのか​​、jqueryでデリゲート関数をいつ使用する必要があるのか​​を知りたいです。彼らは同じ機能を実行しませんか?違いはなんですか?

4

1 に答える 1

3

イベントリスナーをバインドする既存の要素がいくつbindある場合は、(または、onbind推奨になっているように、@ Yoshiによって示されているように)使用します。処理する要素がまだ存在しない場合(たとえば、動的に生成され、作成する新しい要素ごとにハンドラーをバインドしたくないが、デリゲートを配置できる共通の親がある場合)に使用します。共通の親を持つ多くの要素でイベントを処理している場合(これは、各要素に個別のハンドラーを使用するよりも、親にデリゲートを使用する方が効率的です)。delegate

DOMイベントはDOM階層をバブルonclickアップするため、要素をクリックすると、その要素のハンドラーがトリガーされ、次にその親のハンドラー、次にその親などがトリガーされます(ハンドラーがstopPropagationイベントを呼び出して、それ以上のバブルアップがキャンセルされない限り) bind。/を使用する場合はon、処理する特定の要素にハンドラーをアタッチします。ハンドラーは、設定したターゲットによって直接トリガーされます。delegate、jQuery内部ハンドラーは、指定した要素にアタッチされ、バブルチェーンを上る途中でイベントをキャッチします。次に、jQueryは、実際のターゲット(ハンドラーがアタッチされている要素の子)が委任で指定したセレクターと一致するかどうかを確認し、一致する場合は呼び出されます(実際のハンドラーがアタッチされているかのように呼び出されます)。親要素ではなくターゲット要素に。@shannonで示されます)。

于 2012-09-03T08:16:01.923 に答える