应该是一个简单的while循环,附加一个图像并递增计数,直到因为图像不存在而触发.error()。
问题是错误事件永远不会触发。目录中有三个图像,但页面只是无限加载,直到选项卡崩溃。在html中的图像上调用.error(),只有当我追加图像时才会调用错误。
以下代码:
jQuery(document).ready(function($) {
var images = 'load';
var i = 1;
while(images == 'load') {
$('.images').append('<img src="window_0' + i + '.jpg" />')
.error(function() {
images = 'finished';
});
i++;
}
});
如果我使用while(i&lt; 4)它完美地工作,因为.error()的结果无关紧要。问题是我需要这个变量,这样只需添加文件到目录而不编辑代码就可以增加加载的图像数量。
以前这可以通过ajax调用实现,但在我的jQuery版本中不起作用(1.7.1
答案 0 :(得分:1)
这里有两个主要问题:首先,你没有将错误事件绑定到img,你将它绑定到$('。images')。
其次,javascript(大多数情况下)是单线程的。即使图像加载可能在后台发生,也不会发生javascript事件处理,直到你的循环退出,除非事件发生,否则它不会发生,所以你有一个catch-22。
这类似于链接加载事件,而不是等待错误事件:
var i = 1;
var img;
function next() {
if (img) $('.images').append(img);
img = document.createElement('img');
$(img).load(next);
img.src='window_0' + (i++) + '.jpg';
}
next();