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 に答える