0

应该是一个简单的 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<4) 它可以完美运行,因为 .error() 的结果并不重要。问题是我需要它是可变的,以便可以通过将文件添加到目录而不编辑代码来增加加载的图像数量。

这曾经可以通过 ajax 调用实现,但在我的 jQuery 版本(1.7.1

4

1 回答 1

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();
于 2012-11-04T21:39:56.760 回答