等到.load()完成

时间:2014-04-10 15:30:51

标签: javascript php jquery html

我目前正在尝试制作一个通过.load事件调用某些数据的网页,然后执行任务。我有一个名为intholder的div,以及一个PHP页面,它生成一些我希望放入该div的输出。我得到的代码如下:

var numCol = floor(window.innerWidth / 200);

if(numCol > 5){numCol = 5;}

var colWidth = 100/numCol;

$("#intHolder").load("/scripts/loader.php?n=" + numCol + "&w=" + colWidth);

然后,PHP文件生成一系列<select>个元素(numCol个元素),并用数据库中的内容填充它们。每个选择框都有一个预先选择的值(由数据库查询确定),从这些值开始,需要在页面上加载更多内容。

每个选择框都有一个唯一的ID(canvasSeln,其中n递增),以及一个包含1位数字类型的值和用于在数据库表中查找的文本值。最后,初始脚本还会生成一系列div,这些数据将放入其中,名为canvasLisn,其中n与选择框相关联。以下是我得到的javascript:

for (var i=1;i<=$num;i++){ 

        var rawSel = document.getElementById("canvasSel" + i).value;

        var selNow = rawSel.substring(1);
        var selType = parseInt(rawSel.substring(0,1));

        if(selType == 1){
            $("#canvasLis"+ i).load("/scripts/profile.php?x=" + selNow);
        }else if(selType == 2){
            $("#canvasLis"+ i).load("/scripts/product.php?x=" + selNow);
        }else if(selType == 3){
            $("#canvasLis"+ i).load("/scripts/department.php?x=" + selNow);
        }else if(selType == 4){
            $("#canvasLis"+ i).load("/scripts/customer.php?x=" + selNow);
        }

}

我已尝试将该代码放入由初始.load回调触发的函数中,但它在绘制对象之前运行,因此无法找到要查找的值。有没有办法强制它在.load不仅完成后运行,但是对象已经被绘制了?

这是带回调的版本:

var numCol = floor(window.innerWidth / 200);

if(numCol > 5){numCol = 5;}

var colWidth = 100/numCol;

$("#intHolder").load("/scripts/loader.php?n=" + numCol + "&w=" + colWidth, function(){

    for (var i=1;i<=numCol;i++){ 

        var rawSel = document.getElementById("canvasSel" + i).value;

        var selNow = rawSel.substring(1);
        var selType = parseInt(rawSel.substring(0,1));

        if(selType == 1){
            $("#canvasLis"+ i).load("/scripts/profile.php?x=" + selNow);
        }else if(selType == 2){
            $("#canvasLis"+ i).load("/scripts/product.php?x=" + selNow);
        }else if(selType == 3){
            $("#canvasLis"+ i).load("/scripts/department.php?x=" + selNow);
        }else if(selType == 4){
            $("#canvasLis"+ i).load("/scripts/customer.php?x=" + selNow);
        }

    }


});

提前致谢。

1 个答案:

答案 0 :(得分:3)

你说你尝试过回调,但你没有表现出来。你试过这个表格吗?

$("#canvasLis"+ i).load("/scripts/profile.php?x=" + selNow, function() {
    // do stuff when load completes
});