Jquery 图像预加载器的 Deferred 数组
Jquery array of Deferred for image preloader
我正在尝试在加载预定义数组中的所有图像后调用一个函数。
像这样尝试
for (var i = 0; i < length; i++) {
d = $.Deferred();
promises.push(p);
img = new Image();
img.onload = function(){
p.resolve
}
img.src = srcs[i];
}
$.when.apply($, promises).done(function(){
defImages.resolve();
})
没用。我做错了什么?
//count of all page images
var img_count=$('img').length;
//images loaded
var img_loaded=0;
$('img').load(function(){
img_loaded++;
if(img_loaded==img_count){
console.log('all images loaded');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/CC-Zero-badge.svg/100px-CC-Zero-badge.svg.png">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/16/CC-BY_icon.svg/100px-CC-BY_icon.svg.png">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/CC-BY-SA_icon.svg/100px-CC-BY-SA_icon.svg.png">
我正在尝试在加载预定义数组中的所有图像后调用一个函数。
像这样尝试
for (var i = 0; i < length; i++) {
d = $.Deferred();
promises.push(p);
img = new Image();
img.onload = function(){
p.resolve
}
img.src = srcs[i];
}
$.when.apply($, promises).done(function(){
defImages.resolve();
})
没用。我做错了什么?
//count of all page images
var img_count=$('img').length;
//images loaded
var img_loaded=0;
$('img').load(function(){
img_loaded++;
if(img_loaded==img_count){
console.log('all images loaded');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/CC-Zero-badge.svg/100px-CC-Zero-badge.svg.png">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/16/CC-BY_icon.svg/100px-CC-BY_icon.svg.png">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/CC-BY-SA_icon.svg/100px-CC-BY-SA_icon.svg.png">