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);
};
.each()
url を呼び出しに渡す (失敗した) 試みを見ることができ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
非同期タスクが実際にループに到達した時間は終了し、完了します (したがって、値は 3 になります) image_link(data, i)
。for...
言うまでもなく、これはurls[i]
「未定義」となります。
これを回避するための(その他の)ヒントはありますか?