2009-05-02 22 views
17

私はJQueryを初めて使っています。jqueryは新しい要素を表示しません

私は、単純な問題を抱えている:

$(document).ready(function() { 

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

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

}); 

問題は次のとおりです。楽器が変更された場合は、スクリプトはTuningSelector変化にもはや応答しません。 JQueryのように、新しいTuningSelector要素が表示されません...

JQueryなどでリフレッシュする必要がありますか?それで、リフレッシュされたDOMが見えますか?

答えて

36

通常、onを使用して、セレクタに一致する新しい要素にハンドラを適用し、DOMの上位要素に委譲するようにします。 jQueryのイベントで

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

.live( "変更")はjQuery 1.4まで実装されません。http://docs.jquery.com/JQuery_1.4_Roadmap#Events –

+1

@Sam - それを指摘してくれてありがとうございます。私はまだ選択して使用していなかったし、それがサポートされていないリストにないことを認識していない。私の答えはこれを反映するように更新されました。 – tvanfosson

+0

.live()は.on()の代わりに非推奨ではありません –

2

あなたは、イベントがしかし、jQueryの1.3は、ライブイベントなどのイベントを提出し、ぼかし、フォーカス、MouseEnterイベント、mouseleave、変更をサポートしていない、あなたが.liveメソッドを使用する新しい要素に適用したい場合。 roadmap(変更、送信、およびぼかし/フォーカスは、jQuery 1.4の場合)

liveQueryプラグインを使用することもできます。

関連する問題