У меня возникли проблемы, адаптирующие сценарий предварительной загрузки изображения jQuery только в одном аспекте: я не могу понять, как обеспечить, чтобы мои изображения загружались/отображались в порядке моего массива изображений.jQuery image preload order
В настоящий момент каждый раз, когда я загружаю страницу, изображения отображаются в другом порядке. (Все, кроме заказа изображения, отлично работает alreday.)
Может ли кто-нибудь помочь мне исправить это?
Соответствующий код:
(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!
}
});
});
});
Update:
В конце концов я решил его с совершенно другим, более коротким сценарием я написал с нуля. Он начинает добавлять столько же (очень маленькие) фиктивные изображения в качестве заполнителей в моем контейнере изображения, как массив содержит реальные изображения и загружает каждое изображение только после того, как предыдущий: совершилось
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));
});
}