最后的尝试
据我所知,您希望能够知道图像何时加载,并多次执行。上一次尝试以及您自己的代码的问题在于,“加载”处理程序仅在设置和执行新图像源之后才应用。请试穿这个尺寸:
$(function () {
var images = ['image1.jpg','image2.jpg' /* ... */ ];
var imageObjects = [];
var imagesToLoad = 0;
for (i = 0, z = images.length; i < z; i++) {
imageObjects[i] = new Image();
imagesToLoad++;
$(imageObjects[i])
.load(function () {
if (--imagesToLoad == 0) {
// ALL DONE!
}
// anything in this function will execute after the image loads
var newImg = $('<img />').attr('src',$(this).attr('src'));
$('.profile').append( $(newImg) ); // I assume this is the code you wanted to execute
})
.attr('src',images[i]);
// Notice that the 'attr' function is executed AFTER the load handler is hooked
}
});
[旧] 新尝试
var images = [ /* you get it by now */ ];
for (i=0,z=images.length;i<z;i++) {
$('<img />')
.attr('src', images[i])
.load(function(){
$('.profile').append( $(this) );
// Your other custom code
});
}
原帖
取自这篇文章的想法
$(document).ready(function(){
var images = ["image1.jpg","image2.jpg"];
var loader = new Image();
for (i=0,z=images.count;i<z;i++) {
loader.src = images[i];
// insert some code here to do something with the now-loaded image
}
// do something with the now-loaded images.
});
或者,
var images = ["image1.jpg","image2.jpg"];
var loader = [];
$(document).ready(function(){
for (i=0,z=images.count;i<z;i++) {
loader[i] = new Image();
loader[i].src = images[i];
// insert some code here to do something with the now-loaded image
}
// do something with the now-loaded images, using the loader array
});