我有一个问题我无法克服.我制作了一个简单的jQuery专辑库,我有这个功能: function loadAlbum (index) { for (var j=1; j xmlData[index].length; j++) { var img = new Image(); $(img).load(function() { $(this).hide(); $(
function loadAlbum (index) { for (var j=1; j < xmlData[index].length; j++) { var img = new Image(); $(img).load(function() { $(this).hide(); $('#album'+index+' .photoContainer').append(this); $(this).fadeIn(); }) .error(function(){ //alert("Could not load one or more photo!"); }) .attr({ 'src': xmlData[index][j], 'id': 'img'+index+j, 'class': 'photoFrame', 'width': newW, 'height': newH }) .css({ 'width': newW, 'height': newH }); }; };
现在,您可以看到所有图像src都是从包含数据的外部XML文件导入的(图像名称是渐进式ex.:photo001.jpg,photo002.jpg等).
它们通过for循环在DOM中创建并附加到div.
你可能会说什么问题?我需要以XML数据上指定的渐进方式附加所有图像,但这只发生在本地计算机上,而不是在某些服务器上上传.我发现这是由于每个图像的加载时间不同取决于大小…但我仍然无法弄清楚如何解决这个问题.有谁有想法吗?
以下尝试一次加载一个图像.加载图像后,将加载该集合中的下一个图像.function loadAlbum(index) { var i = 0; var j = xmlData[index].length; function loadImage() { if (i >= j) return; // do what you're doing in the loop except for .... $(img).load(function() { $(this).hide(); $('#album'+index+' .photoContainer').append(this); $(this).fadeIn(); // increments i by 1 and calls loadImage for the next image. i++; loadImage(); // etc. } loadImage(); }
我把它作为练习让你确定如何一次加载多个图像并仍然保持订购:)