[解決済み] なぜclick()ではなく、jQuery on()なのか?
2023-04-19 18:44:44
疑問点
現在、jQueryでクリック時に何かしたい場合、次のようにします。
$(".close-box").click( function() {
MoneyBox.closeBox();
return false;
});
ある人がプロジェクトで持っているコードを見ていたら、こんな風にやっていたのですが...。
$(".close-box").live("click", function () {
MoneyBox.closeBox();
return false;
});
私が見た限りでは、live()関数を使っている以外は同じことをしているように見えますが、これは現在では非推奨となっており、jQueryのドキュメントでは
on()
を使うようにと書かれていますが、どちらにしても、なぜ最初の例の代わりにlive/on()を使うのでしょうか?
どのように解決するには?
動的に生成された要素 (たとえば AJAX 呼び出しによるもの) があるため、以前に同じ要素セレクタにバインドされていた同じクリックハンドラを使用したい場合、次のようにしてクリックイベントを "delegate" します。
on()
でセレクタ引数を指定します。
デモをするために
on()
と同義である可能性もあります。
click()
と同義です。
$('.elementClass').click(function() { // code
});
とは同義です。
$('.elementClass').on('click', function() { // code
});
を持つすべての要素に一度だけハンドラを追加するという意味で、クラス
elementClass
. もし、新しい
elementClass
から来る、例えば
$('<div class="elementClass" />')
から来る場合、ハンドラはその新しい要素にバインドされないので、そうする必要があります。
$('#container').on('click', '.elementClass', function() { // code
});
仮定の話
#container
は
.elementClass
の祖先である
関連
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] Node.jsのES6クラスをrequireで作る
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?