除了一件事,我有以下功能运行正常。它首先附加的内容没有任何后果。
(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%的时间内完成,但偶尔会以不同的顺序附加。
有什么建议吗?
答案 0 :(得分:2)
很好地使用以下代码:
(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();
}
});
})();
})();
我不确定这是否是最佳方式,或者代码是否可以调整。但它的确有效! :)
感谢所有的回复!
答案 1 :(得分:0)
使用$.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;
});
});
})();