1. ホーム
  2. ジャバスクリプト

[解決済み】jQueryでlive()をon()に変更する方法

2022-04-12 11:19:39

質問

私のアプリケーションでは、ドロップダウンを動的に追加しています。ユーザーは必要な数だけ追加することができます。

私は従来、jQueryの live() メソッドを使用して、これらのドロップダウンのいずれかが change() を編集します。

$('select[name^="income_type_"]').live('change', function() {
    alert($(this).val());
});

jQuery 1.7で、これを更新しました。

$('select[name^="income_type_"]').on('change', function() {
    alert($(this).val());
});

Docsを見ると、これは完全に有効であるはずなのですが、イベントハンドラが起動しません。もちろん、jQuery 1.7がロードされ、実行されていることなどは確認しています。エラーログにもエラーはありません。

私は何を間違えているのでしょうか?ありがとうございます。

解決方法を教えてください。

その on ドキュメンテーション の状態(太字 ;)になります。)

<ブロッククオート

イベントハンドラは、現在選択されている要素にのみバインドされます。 .on() .

に相当する。 .live() は次のようなものです。

$(document.body).on('change', 'select[name^="income_type_"]', function() {
    alert($(this).val());
});

ただし、イベントハンドラはできるだけ要素の近く、つまり階層に近い要素にバインドしたほうがよい。

更新してください。 別の質問に答えているうちに、このようなことも書かれていることがわかりました。 .live ドキュメント :

をリライトする。 .live() これらは、3つのイベントアタッチメントメソッドに相当する呼び出しのテンプレートです。

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+