2

我有一组事件可以在某些 div 中加载一些 html:

$("#id1").load("1.html");
$("#id2").load("2.html");
$("#id3").load("3.html");
$("#id4").load("4.html");

然后我隐藏了一个加载栏:

$("#load-bar").hide();

但当然,一切都同时发生。

如何将加载元素组合在一起并仅在它们全部完成后执行隐藏功能?

4

1 回答 1

6

使用$.when()

$.when($("#id1").load("1.html"), $("#id2").load("2.html"), $("#id3").load("3.html"), $("#id4").load("4.html")).done(function () {
    $("#load-bar").hide();
});


约翰评论后更新

var load1 = $.ajax({
    url: '1.html',
    dataType: 'html'
}),
    load2 = $.ajax({
        url: '2.html',
        dataType: 'html'
    }),
    load3 = $.ajax({
        url: '3.html',
        dataType: 'html'
    }),
    load4 = $.ajax({
        url: '4.html',
        dataType: 'html'
    });

$.when(load1, load2, load3, load4).done(function () {
    $("#load-bar").hide();
});

如果您有不同数量的请求,您可以使用 --> Bill Criswell评论

$.when.apply($, arrayOfDeferreds).done(doWhenAllDone);
于 2013-10-23T14:05:46.627 回答