web-dev-qa-db-ja.com

jqueryは新しい要素を認識しません

私はJQueryを初めて使用するので、我慢してください:)。

私は単純な問題を抱えています:

$(document).ready(function() {

     $("#instrument").change(function() {
         $("#tunings").html("<select id=\"TuningSelector>\"[..]</div>");
     });

     $("#TuningSelector").change(function() {
         DoSomethingWithTheValue();
      }); 

 });

問題は、インストゥルメントが変更されると、スクリプトがTuningSelectorの変更に応答しなくなることです。 JQueryが新しいTuningSelector要素を認識しないように...

JQueryなどでリフレッシュを呼び出す必要がありますか?更新されたDOMが表示されるようにするには?

19
Peter

通常、 on を使用して、セレクターに一致する新しい要素にハンドラーを適用し、DOMの上位の要素に委任します。

$('body').on( 'change', '#control', function() {
    DoSomething();
});
36
tvanfosson

JQueryイベントでは、イベントを新しい要素に適用する場合は 。live メソッドを使用しますが、jQuery 1.3は、blur、focus、mouseenter、mouseleave、change、submitイベントをライブイベントとしてサポートしていません。 。 (変更、送信、ぼかし/フォーカスは ロードマップ jQuery 1.4の場合)

別の方法として、 liveQuery プラグインを使用できます。

2
Sam Hasler