-1

選択の変更をチェックしてメッセージを警告する簡単なコードがあります。これは正常に機能.select-paymentしていますが、ページに新しい要素を挿入すると、このメソッドは最初の要素でのみ使用でき、javascript で作成されたものでは使用できません

$(document).ready(function() {
  return $(".select-payment").on("change", function() {
    return alert("hello");
  });
});

.select-paymentクラスを持つページがロードされた後に追加された要素に対してそれを機能させる方法はありますか?

4

5 に答える 5

4
$(document).on("change", ".select-payment", function() {
    alert("hello");
});

また、変更ハンドラー内から戻ることはほとんど意味がなく、アラートの結果を返すことはさらに意味がありません。

于 2013-08-23T14:15:56.590 に答える
1

event delegation以下のように使用できます。

$(document).on('change', '.select-payment', function () {..
  1. 上記の行を実行するときに、ドキュメントを DOM に存在する closeby コンテナーに置き換えます。
  2. イベント委任は、イベントを親要素にバインドしevent.target、指定されたセレクターと一致するときにハンドラーを実行します。
于 2013-08-23T14:16:13.897 に答える
1

動的に作成された要素を対象とする場合、 .on()の委譲構文を使用する必要があります。

 $(document).on("change", ".select-payment", function() {

ドキュメントから:

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが .on() を呼び出す時点でページに存在している必要があります。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。

于 2013-08-23T14:16:16.587 に答える
1

なぜ return ステートメントを入れているのですか?イベント ハンドラーを既存の ではなくドキュメントにアタッチする必要があります.select-payment

これを試して :$(document).on("change",".select-payment",function(){...});

于 2013-08-23T14:16:41.737 に答える