Hello 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,偶尔会匹配我的网络服务器上有许多图像的图像。
答案 0 :(得分: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();
}