Я пытаюсь предварительно загрузить некоторые изображения с помощью вызова jQuery AJAX, но у меня есть реальные проблемы, передающие строку (url) в функцию в функции успеха вызова AJAX (если это имеет смысл).
Вот мой код как есть:
//preloader for images on gallery pages
window.onload = function() {
setTimeout(function() {
var urls = ["./img/party/"]; //just one to get started
for ( var i = 0; i < urls.length; i++ ) {
$.ajax({
url: urls[i],
success: function(data,url) {
$(data).find("a:contains(.jpg)").each(function(url) {
new Image().src = url + $(this).attr("href");
});
}
});
};
}, 1000);
};
Можно увидеть, что моя (неудачная) попытка передать URL-адрес в вызов .each()
- url
заканчивается, принимает значение возрастающих целых чисел. Не знаете, к чему это относится, возможно, к числу jpg файлов?
... в любом случае, он должен, конечно, взять единственное значение в моем исходном массиве urls.
Спасибо за любую помощь - я всегда, кажется, немного перекручиваю эти обратные вызовы.
прогрессбар?
Итак, я немного пошатнулся, обращая внимание на комментарии от @ron tornambe и @PiSquared, и сейчас я здесь:
//preloader for images on gallery pages
window.onload = function() {
var urls = ["./img/party/","./img/wedding/","./img/wedding/tree/"];
setTimeout(function() {
for ( var i = 0; i < urls.length; i++ ) {
$.ajax({
url: urls[i],
success: function(data) {
image_link(data,i);
function image_link(data, i) {
$(data).find("a:contains(.jpg)").each(function(){
console.log(i);
new Image().src = urls[i] + $(this).attr("href");
});
}
}
});
};
}, 1000);
};
Я попытался разместить image_link(data, i)
здесь и везде (в каждой вложенной функции и т.д.), но я получаю тот же результат: значение для i
регистрируется только как 3. Я подозреваю, что это потому, что все ссылки до i
указывают на одно и то же, и к тому времени, когда асинхронная задача фактически попадает в image_link(data, i)
, цикл for...
завершен и завершен (и, следовательно, имеет значение 3). Излишне говорить, что это дает urls[i]
как "undefined".
Любые (более) советы, как я могу обойти это?