Pracuję nad kodem, który będzie ładował sekwencję (20+) dużych obrazów (~ 500 KB każdy). Po załadowaniu każdego obrazu następuje jego zanik. Jako punkt wyjścia użyłem this fiddle z this discussion.Używanie jQuery do sekwencyjnego wczytania i zanikania elementów
Mam ładowanie obrazów tak, jak chcę, ale muszę zrobić kilka innych rzeczy bez przerywania tego sekwencyjnego ładowania. Potrzebuję załadować znacznik zawierający element iframe między trzecim a czwartym obrazem i muszę załadować łącze po obrazach. Oto przykład wyjścia znaczników muszę:
<div id="container">
<img src="img-1.jpg" />
<img src="img-2.jpg" />
<img src="img-3.jpg" />
<div><iframe></iframe></div>
<img src="img-4.jpg" />
<img src="img-5.jpg" />
<img src="img-6.jpg" />
<img src="img-7.jpg" />
<img src="img-8.jpg" />
<img src="img-9.jpg" />
<a href="/link/">Link text</a>
</div>
mogę załadować zdjęcia po prostu w porządku, ale jestem zakleszczony z jak załadować IFRAME dopiero pierwsze trzy zostały załadowane, a wtedy reszta obrazy ładują, a następnie link. Oto mój obecny javascript:
var no = 22,
main = [],
i;
for (i = 1; i <= no; i++) {
main[i] = "path/to/image/folder/img-" + i + ".jpg";
}
function loadImages(arr,loc) {
if (arr.length === 0) {
return;
}
function imageLoaded(img) {
$(img).hide().appendTo(loc).fadeIn(800);
}
function loadImage() {
var url = arr.shift(),
img = new Image(),
timer;
img.src = url;
if (img.complete || img.readyState === 4) {
imageLoaded(img);
if (arr.length !== 0) {
loadImage();
}
}
else {
timer = setTimeout(function() {
if (arr.length !== 0) {
loadImage();
}
$(img).unbind("error load onreadystate");
}, 10000);
$(img).bind("error load onreadystatechange", function(e) {
clearTimeout(timer);
if (e.type !== "error") {
imageLoaded(img);
}
if (arr.length !== 0) {
loadImage();
}
});
}
}
loadImage();
}
loadImages(main,"#container");
„nie” zmienna ustawia liczbę zdjęć, aby przejść przez (muszę to zrobić na wielu stronach z różnych numerów obrazów), a funkcja loadImages trwa argumentów, dla których tablica do przełączania i gdzie umieścić obrazy. Ten kod prawdopodobnie byłby dużo czystszy, ale ja jestem nowy w javascript. Każda pomoc będzie bardzo ceniona!
Doskonale nadaje się do wstawiania elementu iframe dokładnie tam, gdzie go potrzebuję. Nie mogę jednak załadować linka na końcu. Oto, jak wstawiam element iframe: 'if ($ (" # container img ") length == 3) { $ (" # container img: last-child ") after ("
"); ' Dla łącza na końcu, próbowałem wstawić ten wewnętrzny loadImages: ' if (arr.length === 0) { linkMarkup(); return; } ' i to wewnątrz loadImage: ' if ($ ("# container img"). Length == 22) { linkMarkup(); } ' Druga będzie działać dla obrazu od drugiego do ostatniego, ale nie ostatniego. –Mam to teraz. To był brakujący element. Dziękuję wszystkim. –