如果存在则附加img

时间:2015-12-25 18:07:53

标签: jquery html ajax

为了不使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网站上的文档,它是唯一让我感到理解的参数
我想我做了很多错误,请指导我 提前谢谢

2 个答案:

答案 0 :(得分:1)

jQuery实际上并没有.error()方法(它在1.8中已弃用),它是本机image.onerror,但如果你{j}将jQuery支持它1}}。

但为什么不使用$(image).on('error', function() {...事件

image.onload

答案 1 :(得分:0)

您需要使用onerror,例如:

&#13;
&#13;
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;
&#13;
&#13;