Pab*_*blo 10 javascript ajax jquery
我有一个简单的问题,但我找不到一个干净的答案.我需要在ajax调用后加载大量图像,并且我想使用动画gif作为预加载器.我正在使用以下代码:
function loadProducts(url) {
$("#loading").show();
$('#inner').fadeOut(1).load(url + ' .product-list', function() {
$('#inner').fadeIn(1000, function() {
$("#loading").hide();
});
});
}
Run Code Online (Sandbox Code Playgroud)
加载HTML时,#loading正在隐藏.load(url + ' .product-list'.问题是沉重的图像仍然在屏幕上呈现,我想继续显示动画.gif,直到图像的渲染完成.有没有办法知道屏幕上的图像何时被渲染?提前致谢.
您可以使用promises检查所有图像何时加载,然后删除加载gif.
这会创建一个在图像加载时解决的承诺,所有承诺都保存在一个数组中,并且当所有承诺都被解析时,即所有图像都被加载时,回调就会触发.
function loadProducts(url) {
$("#loading").show();
$('#inner').fadeOut(1).load(url + ' .product-list', function() {
var promises = [];
$('#inner').find('img').each(function(_, image) {
var img = new Image(),
def = new $.Deferred();
img.onload = function() {
def.resolve();
}
promises.push( def.promise() );
img.src = image.src;
if (img.complete) img.onload();
});
$.when.apply(undefined, promises).done(function() {
$('#inner').fadeIn(1000, function() {
$("#loading").hide();
});
});
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2901 次 |
| 最近记录: |