0

我正在使用 for 循环向用户显示一系列缩略图。如果thumbnails[i].path加载失败,我想加载thumbnail_unavailable.jpg它的位置。

据我了解,jQuery 的.error()处理程序应按如下方式使用。

for (var i=0; i<thumbnails.length; i++){
   var txt = "";
   txt += "<div class...>";

       // if no image, load "Screenshot Unavailable" thumbnail
       var temp_img = $('<img id="'+thumbnails[i].video_id+'" />');
       temp_img.error(function () {      
          // temp_img.attr doesn't work
          temp_img.attr('src','images/thumbnail_unavailable.jpg');
          // nor does: $('#'+thumbnails[i].video_id).attr('src','...jpg');
          // nor does: $(this).attr('src','...jpg');
       }).attr('src', thumbnails[i].path);

    txt += temp_img.get(0).outerHTML;                                
    txt += "</div>";

   $('#putVidThumbsHere').append(txt);
}

但是,thumbnail[i].path无论我使用$(this) $('#'...temp_img

4

1 回答 1

0

我尝试了一切,包括on/one绑定来处理失败的资源。不知何故(我很想解释为什么),在那个 for 循环中所做的引用并没有很好地与确保图像的 URL 实际失败所需的延迟时间相结合。

我终于在另一个 SO 线程上找到了这个绝妙的解决方案:

function ImgError(source){
    source.src = "/images/noimage.gif";
    source.onerror = "";
    return true;
}

<img src="someimage.png" onerror="ImgError(this);"/>
于 2012-06-25T15:26:12.737 回答