[解決済み] 直接 vs. 委任 - jQuery .on()
質問
との違いを理解しようとしています。 ダイレクト と デリゲート イベントハンドラで jQuery .on() メソッド . 具体的には、この段落の最後の文です。
を使用する場合
selector
が提供されている場合、イベントハンドラは、以下のように参照されます。 デリゲート . jQuery は、イベントのターゲットからハンドラがアタッチされた要素まで(つまり、最も内側の要素から最も外側の要素まで)イベントをバブル化し、そのパスに沿ってセレクタに一致するすべての要素に対してハンドラを実行します。
runs the handler for any elements"というのはどういう意味ですか?私は テストページ を実験してみました。しかし、以下の構成はどちらも同じ動作になります。
$("div#target span.green").on("click", function() {
alert($(this).attr("class") + " is clicked");
});
または
$("div#target").on("click", "span.green", function() {
alert($(this).attr("class") + " is clicked");
});
どなたか、この点を明確にするために、別の例を参照していただけないでしょうか?ありがとうございます。
どのように解決するのですか?
ケース1(直接)。
$("div#target span.green").on("click", function() {...});
== div#target 内のすべての span.green に、「クリックされたら、X を実行する」というメッセージを表示させたいのです。
ケース2(委譲されたもの)。
$("div#target").on("click", "span.green", function() {...});
== おい、div#target! span.green" である子要素がクリックされたら、X を実行します。
つまり、...
ケース1では、そのスパンがそれぞれ個別に指示されています。新しいスパンができても、そのスパンは指示を聞いていないので、クリックに反応しないでしょう。それぞれのスパンは 直接責任 は、それ自身のイベントに対応します。
2の場合、コンテナのみに指示があり、コンテナはクリックに気づく責任があります。 に代わって の子要素になります。イベントをキャッチする作業は 委譲 . これは、今後作成される子要素に対しても、この命令が実行されることを意味します。
関連
-
fetch ネットワークリクエストラッパーの説明例
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
要素ツリー制御によるvueTreeテーブル
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules