如何使用jquery从页面数组加载 - 按顺序

时间:2011-04-03 20:51:24

标签: jquery ajax asynchronous load append

我从一个页面抓取一堆链接,然后从这些页面中提取特定的内容元素。我刚刚创建的代码可以正常运行。

问题是因为请求是异步的,元素没有按顺序加载。我尝试添加延迟但是没有用。

我是否需要使用.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());
    });

 });

}

3 个答案:

答案 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());

    }     
     });

 });