我从一个页面抓取一堆链接,然后从这些页面中提取特定的内容元素。我刚刚创建的代码可以正常运行。
问题是因为请求是异步的,元素没有按顺序加载。我尝试添加延迟但是没有用。
我是否需要使用.ajax而不是.load?如果是这样,这个循环附加的内容与.ajax命令一样?你还可以使用带网址的选择器吗?或者是否有一种有效的方法来实现.load?
提前致谢。
function runthis() {
var links = $("#article-slide-belt a").map(function() {
return this.href;
}).get();
$.each( links, function(i, l){
$("<div>").load(l + " .gl_left", function() {
$(".gl_left").append($(this).find(".gl_left").html());
});
});
}
答案 0 :(得分:2)
您可以在完成第一个请求时指定要加载的下一个链接 - 下面的代码不是很优雅,但它会做您想做的事情
var links
var content_index=0;
$(document).ready( function() {
links = $("#article-slide-belt a").map( function() {
return this.href;
}).get();
loadContent()
})
function loadContent() {
if (content_index<links.length) {
$("div").load(links[content_index] + " .gl_left", function() {
$(".gl_left").append($(this).find(".gl_left").html());
content_index++;
loadContent();
});
}
}
答案 1 :(得分:1)
答案 2 :(得分:0)
我尝试了同步.ajax路由。而且它的顺序正确,但等待是无法忍受的。在加载数据时需要是可读页面。
$.each( links, function(i, l){
$.ajax({
url: l,
async: false,
success: function(data){
var $response=$(data);
$(".gl_left").append($response.find(".gl_left").html());
}
});
});