我正在尝试通过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)
所有地方(在每个嵌套函数等中)将here和here放置在那里,但得到的结果是相同的:for的值i
只记录为3。我怀疑这是因为所有引用都i
指向同一个事物并且时间异步任务实际获取到image_link(data, i)
的for...
循环是完全断绝了(因此具有值为3)。不用说这给出urls[i]
了“未定义”。
还有(更多)技巧可以解决这个问题吗?