我遇到了麻烦,在一个方面适应jQuery图像预加载脚本:我无法弄清楚如何确保我的图像按照我的图像数组的顺序加载/显示。jQuery图像预加载顺序
目前每次我重新加载页面时,图像都会以不同的顺序显示。 (除了图像顺序以外的所有东西都能正常工作)
任何人都可以帮我解决这个问题吗?
相关的代码:
(function($) {
var imgList = [];
$.extend({
preload: function(imgArr, option) {
var setting = $.extend({
init: function(loaded, total) {},
loaded: function(img, loaded, total, bild) {},
loaded_all: function(loaded, total) {}
}, option);
var total = imgArr.length;
var loaded = 0;
setting.init(0, total);
for (var i = 0; i < total; i++) {
imgList[i] = ($("<img />")
.attr("src", imgArr[i])
.load(function() {
loaded++;
setting.loaded(this, loaded, total, this.src);
if(loaded == total) {
setting.loaded_all(loaded, total);
}
})
);
}
}
});
})(jQuery);
$(document).ready(function() {
$(function() {
$.preload([
"image1.jpg",
"image2.jpg",
"image3.jpg"
], {
init: function(loaded, total) {
var z = 0;
while (z < total) {
z++;
$("section nav").append('<img id="e'+z+'" src="all/blank.png" alt=""/>');
}
},
loaded: function(img, loaded, total, bild) {
$("#e"+loaded).prop("src",bild);
},
loaded_all: function(loaded, total) {
//all done!
}
});
});
});
更新:
在我一个完全不同的,脚本短得多我从头开始写解决它的结束。它开始加入尽可能多的(很小)虚拟图像占位符,以我的形象容器作为数组包含真实图像和负载上一个操作完成后才会每个图像:
imgs = new Array("number1.png","number2.png","number3.png");
for (i=0; i<imgs.length; i++) {
$("section nav").append('<img id="e'+i+'" src="blank.png" alt=""/>');
}
fin(0);
function fin (n) {
$('#e'+n).attr('onload', 'fin('+n+')');
$("#e"+n).attr("src", imgs[n]).load(function() {
fin ((n+1));
});
}