2012-02-14 11 views
1

Jquery Load()メソッドを使用してHTMLコードをロードして挿入しています。 しかし、私が知っているhtml要素を見つけようとしているとき、ロードされていません。jquery.load()を使用してロードされた要素が存在しません

//React to mouse clicks on table rows (that has company ID specified) 
$("tr[id^=c_],tr[id^=e_]").live("click",function(event) { 
     //Fetch data from the server 
     var data = $('<td colspan="8" />').load('myUrRL?uid='+ID); 
     //Insert html-code into page 
     var tmp = $('<tr />').append(data).insertAfter($(this)); 

     //Find one element we just inserted 
     var chartDiv = $("#chart_div_"+ID); // <-- FAILS !!! 
}); 
//Now the element exists 
var chartDiv = $("#chart_div_"+ID); // <-- SUCCESS 

なぜこの問題がありますか?私はそれを修正する最も簡単な方法は何ですか?

答えて

2

jQuery.load jQueryのAJAX機能のラッパーであるため、非同期動作です。コールバックを使用してみてください:

var self = this; 
var data = $('<td colspan="8" />').load('myUrRL?uid='+ID, function(){ 
    //Insert html-code into page 
    var tmp = $('<tr />').append(data).insertAfter($(self)); 

    //Find one element we just inserted 
    var chartDiv = $("#chart_div_"+ID); // <-- SUCCESS !!! 
}); 
+0

@KevinB Nice LOL ...コメントを「SUCCESS」に変更するために編集をクリックしました。あなたはすでにそれを変更していました。 :D –

+0

ニース。最初に私は元のコードをコピーしたと思っていましたが、今では:)。私は新しいスコープに入るので$(これ)を置き換える必要があると思いますか? – David

+0

いいキャッチ、@ David。私は私の答えでそれを修正します。 –

2

コンテンツの読み込みが完了するまで待つ必要があります。

//React to mouse clicks on table rows (that has company ID specified) 
$("tr[id^=c_],tr[id^=e_]").live("click",function(event) { 
     //Fetch data from the server 
     var data = $('<td colspan="8" />').load('myUrRL?uid='+ID,function(){ 
       var chartDiv = $("#chart_div_"+ID); // <-- SUCCESS !!! 
     }); 
     //Insert html-code into page 
     var tmp = $('<tr />').append(data).insertAfter($(this)); 

     //Find one element we just inserted 
     var chartDiv = $("#chart_div_"+ID); // <-- FAILS !!! 
}); 
//Now the element exists 
var chartDiv = $("#chart_div_"+ID); // <-- SUCCESS 
関連する問題