0

你好 Stack Overflow 社区,最近,我一直在使用 jQuery 进行快速图像显示。它有一个可以随机选择和显示的可能图像列表。问题是,在页面完成加载后,如果图像无效,jQuery 将停止检测图像加载错误。

我目前查找和修复错误的方法如下:

$('img').error(function() {
    $(this).attr('src',getImgUrl());
});

这在正常情况下(例如正在加载的页面)会选择一个有效的图像,即使在一行中指定了多个无效图像。但是,在页面加载完成后,如果选择了无效图像,并且加载失败,则甚至不会调用此函数。奇怪的是,如果我为所有图像添加一个 onerror 属性,无论页面是否新加载,它们总是从 onerror 中调用,那么为什么 jQuery 会出现这个问题呢?任何帮助表示赞赏,谢谢。

更新:这似乎也发生在其他 jQuery 函数上,例如 click。

更新:jQuery 识别页面上的新元素(例如新创建的图像)似乎是一个问题。

更新那些询问 getImageUrl 的人:

function getImgUrl()
{
    var text = (Math.round(Math.random() * 3)).toString();
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for(var i=0; i < 4; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return '/' + text;
}

所有这一切都是选择一个随机 URL,它偶尔会与我的网络服务器上包含许多图像的图像匹配。

4

1 回答 1

1

jQuery似乎在识别页面上的新元素时遇到问题,所以我解决这个问题的方法不是删除图像并将其添加到页面,我只是在进行更改时编辑了现有的图像SRC,这很奇怪,jQuery错误功能完美响应。

这是我最终为所有感兴趣的人提出的刷新功能:

function refreshImages()
{
var images = 10;

for(var i = 0;i < images;i++)
{
    var url = getImgUrl();

    $('#thumb' + i).attr('src',url);

    if(i == 0)
    {
        $('#fullimage').attr('src',url);
        $('.thumb').css('border','2px solid white');
    }
}
resize();
}
于 2013-08-09T08:44:41.837 回答