2012-02-10 11 views
3

可能性の重複:基本的に
Multiple ajax calls inside a each() function.. then do something once ALL of them are finished?jQueryの:(負荷を含む)(それぞれの後にコードを実行)が完全だ終了

、Iはそれぞれ()ループの後に機能を実行します各ループのload()を完全に終了します。各リンクを読み込むのに時間がかかり、ブラウザが追いつくのを待っていますが、スクリプトはすでに次のステップに移動しています。何か案は?

jQuery('#theId a').each(function() { // contains many links 
    toLoad = jQuery(this).attr('href'); 
    jQuery('#containment').load(toLoad, function(response) { 
     //do stuff 
    }); 
}); 

//... Do stuff after the above is really complete. 
+0

each()のindexパラメータを使用してオブジェクトをカウントダウンし、条件のロードのコールバックを使用します。 – ggzone

+1

これを行う最善の方法は、遅延オブジェクトを使用することです。私は例を掲載しようとしていたが、上記のリンクを見た。その質問の一番上の答えを使用してください。 –

+0

最後の要素( '$( 'a:last')。addClass( 'lastlink');')にクラスを追加してから、すべてのリンクを繰り返してload()を実行しているときに、 load()コールバックから実行するすべての要素を含む関数を呼び出すだけで、以前割り当てたクラス( 'lastlink')を持っている要素があるとします。 – j08691

答えて

5

このような何か試してみてください:「これは」ちょうどあなたが持っているものに、その行を戻し、すでにjQueryオブジェクトではない場合

var e = jQuery("#theId a"), l = e.length; 
e.each(function() { 
    toLoad = this.attr("href"); // I'm fairly sure "this" is already a jQuery object 
    jQuery("#containment").load(toLoad, function(response) { 
     // do stuff 
     l--; 
     if(l == 0) { 
      // this is the last one - do ending stuff here. 
     } 
    }); 
}); 

を。

+0

'this'はDOM要素を参照します。 –

+0

十分な公正 - jQueryを使用していないので、わかりません:D –

+0

これは完全に機能しました。ありがとう! –

関連する問題