循环中的JQuery .load()不起作用

时间:2014-08-01 18:31:33

标签: javascript jquery

尝试运行以下代码,但它以我需要的方式工作:

if(my_condition){
    $('body').append("<div id='loaddiv'><div>");
    for(var i=1; i<=100; i++){
        var dl = 0;
        $('#loaddiv').load('/script/?p='+i);
        dl = $('#loaddiv .standart-view tr').length;
        alert(dl);
    }
}

因此,我必须为每个页面获取tr元素的数量,这是具有类标准视图的父元素,以及他的父元素 - div块c id = load214235,但是在警报中不断显示零: (我尝试升级代码,在load-callback函数中添加所有代码,但仍然无效......

if(my_condition){
    $('body').append("<div id='loaddiv'><div>");
    for(var i=1; i<=100; i++){
        var dl = 0;
        $('#loaddiv').load('/folder/?p='+i, function(){
            dl = $('#loaddiv .standart-view tr').length;
            alert(dl);
        });
    }
}

+我在休息状态后仍未加载;萤火虫它只是发誓说休息不知道那么近......我怎么能摆脱这种局面?我觉得有变量和数据可见性的东西没有时间加载另一个页面,并且脚本正在运行。 Jquery已连接,其余代码正在工作,包括jquery的函数,另一个页面上的元素层次结构(tr的数量应该是)。

1 个答案:

答案 0 :(得分:0)

首次加载是异步调用,您将其视为同步。您正在读取返回Ajax调用之前的内容。因此,为什么它始终为零。

其次,当你把它连接起来时,内容将最终写在彼此之上。你不能使用load()并期望它在循环中工作。

这是基本的想法:

(function () {
    var pageCounter = 1;
    var tableRowsTotal = 0;
    max pageMax=10;
    function loadPage() {
         $.get('/folder/?p='+pageCounter, function(data){
             var table = $(data).filter(".standart-view");
             //or
             //var table = $(data).find(".standart-view");
             var rows = table.find("tbody tr");
             var rowCount = rows.length;
             console.log(pageCounter, rowCount);
             tableRowsTotal += rowCount;
             pageCounter++;
             if(pageCounter<pageMax) {
                 loadPage();
             } else {
                   console.log("done");
             }
        });
    }
    loadPage();
}());