为了不使html文件太重,并且对于简单快速的阅读porpuses,我想创建img
元素"动态"但只有当它们存在于服务器中时,这就是我所得到的结果,所以我在这里试图打扰这两个解决方案:Question
error()
mehode的解决方案不起作用:Demo
控制台说$(...).error
不是功能,我不知道为什么
我试着用旗帜
$('ul').each(function() {
for (i = 2; i < 10; i++) {
var flag = true
image = new Image()
image.src = $(this).find('img').attr('src').replace(/\d/, i)
$(image).error(function() {
flag = false
})
if (flag /*or i can just write: flag==true*/ ) {
//do nothing
} else {
$(this).append('<li>' + $(image) + '</li>')
}
//or just => flag ? return : $(this).append('<li>' + $(image) + '</li>')
}
})
但它并不适用于我尝试过的所有选项
我也尝试不使用.error()
并且只使用if(image.width!=0)
或if($(image).width()!=0)
但是当我尝试在控制台中获得宽度时,它们都不起作用,因为它表示0(对于第一个选项)或未定义
Ajax的第二个解决方案也不起作用:Demo
我不知道success
是否是正确使用的参数,我查看了jquery网站上的文档,它是唯一让我感到理解的参数
我想我做了很多错误,请指导我
提前谢谢
答案 0 :(得分:1)
jQuery实际上并没有.error()
方法(它在1.8中已弃用),它是本机image.onerror
,但如果你{j}将jQuery支持它1}}。
但为什么不使用$(image).on('error', function() {...
事件
image.onload
答案 1 :(得分:0)
您需要使用onerror,例如:
function checkImage(src, good, bad) {
var img = new Image();
img.onload = good;
img.onerror = bad;
img.src = src;
}
var imageExist = "http://jsfiddle.net/img/logo.png";
var imageNotExist = "foo.gif";
checkImage(imageExist, function() {
alert(this.src + " " + "good");
}, function() {
alert("bad");
});
checkImage(imageNotExist, function() {
alert("good");
}, function() {
alert(this.src + " " + "bad");
});
&#13;