我有一组事件可以在某些 div 中加载一些 html:
$("#id1").load("1.html");
$("#id2").load("2.html");
$("#id3").load("3.html");
$("#id4").load("4.html");
然后我隐藏了一个加载栏:
$("#load-bar").hide();
但当然,一切都同时发生。
如何将加载元素组合在一起并仅在它们全部完成后执行隐藏功能?
我有一组事件可以在某些 div 中加载一些 html:
$("#id1").load("1.html");
$("#id2").load("2.html");
$("#id3").load("3.html");
$("#id4").load("4.html");
然后我隐藏了一个加载栏:
$("#load-bar").hide();
但当然,一切都同时发生。
如何将加载元素组合在一起并仅在它们全部完成后执行隐藏功能?
使用$.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);