jQuery每个都有超时

除了一件事,我有以下function运行正常。 它首先附加的内容没有任何后果。

(function biograf(){ var placeholder = $('#top-imageholder'); $('ul#biomenu > li').each(function(){ var obj = $(this); var pageLink = obj.find('a:first').attr('href'); $.get(pageLink, function(data) { placeholder.append( $(data).find('#top-imageholder').html() ); placeholder.append( $(data).find('#top-imageholder').siblings('ul') ); }); }); })(); 

我希望函数按照我的列表项放在#biomenu中的顺序追加占位符。

它在90%的情况下都会这样做,但偶尔它会以不同的顺序附加。

有什么建议?

好了,使用以下代码:

 (function biograf(){ var placeholder = $('#top-imageholder'); var item = $('ul#biomenu > li'); var index = 0; (function loop(){ setTimeout(function(){ var pageLink = item.eq(index).find('a:first').attr('href'); if( pageLink != undefined ){ $.get(pageLink, function(data) { placeholder.append( $(data).find('#top-imageholder').html() ); placeholder.append( $(data).find('#top-imageholder').siblings('ul') ); }); index++; loop(); } }); })(); })(); 

我不确定这是否是最佳方式,或者代码是否可以调整。 但它的确有效! 🙂

谢谢你的所有回复!

使用$.when (未经测试的代码)订购结果:

 (function (){ var placeholder = $('#top-imageholder'); var promises = []; $('ul#biomenu > li').each(function(){ var obj = $(this); var pageLink = obj.find('a:first').attr('href'); promises.push($.get(pageLink)); }); $.when.apply(null, promises).done(function() { $.each(arguments, function(data) { placeholder.append( $(data).find('#top-imageholder').html() ); placeholder.append( $(data).find('#top-imageholder').siblings('ul') ); return true; }); }); })();