0
boot_sections = ["123625","113231","11232","113216", ..... ];

for (var k in boot_sections) {
    $.get('/load?sectionId=' + boot_sections[k], function(data) {
        $('#sections').append(data);
    });
}

这是我加载东西的地方。

我需要添加 datepicker、lazyload 和图像预览,但我需要等到所有请求的加载完成

如何检查所有请求是否已完成?

我试过像:

$('#sections:last-child').ready(function() { /* apply stuff here */ });

但我无法让它工作。

4

1 回答 1

3

好吧...这不是 ready 方法的用途,当然它没有用。你需要使用$.when()

var requestArray = [];

for (var k in boot_sections) {
    requestArray.push($.get('/load?sectionId=' + boot_sections[k], function(data) {
        $('#sections').append(data);
    }));
}

$.when.apply($,requestArray).done(function(){
    // do stuff
})

此外,由于您使用的是数组,因此不应使用 for-in 循环。jQuery 有一个方法可以让给定数组的代码更简单(也适用于对象)

var requestArray = $.map(boot_sections,function(id) {
    return $.get('/load?sectionId=' + id, function(data) {
        $('#sections').append(data);
    });
}

$.when.apply($,requestArray).done(function(){
    // do stuff
})
于 2013-10-10T14:07:18.530 回答