jquery在.load()函数中重新建立img src

jquery在.load()函数中重新建立img src,jquery,image,path,load,src,Jquery,Image,Path,Load,Src,我试图弄清楚如果映像src路径无效或找不到映像,如何重新建立img src。我有一个动态创建的imgsrc路径,它有时可能指向一个没有实际图像的目录。在这种情况下,我需要将src更改为img/missing.jpg。我做这件事运气不好: $('.imgContainer').append( "<img id='pic' src='/dynamically/created/path/to/img.jpg'>" ); $('.imgContainer img#pic').load(fun

我试图弄清楚如果映像src路径无效或找不到映像,如何重新建立img src。我有一个动态创建的imgsrc路径,它有时可能指向一个没有实际图像的目录。在这种情况下,我需要将src更改为
img/missing.jpg
。我做这件事运气不好:

$('.imgContainer').append( "<img id='pic' src='/dynamically/created/path/to/img.jpg'>" );
$('.imgContainer img#pic').load(function(){
     if( $(this).width() == 0 && $(this).height() == 0 ){
        $(this).attr({src: 'img/missing.jpg'})
               .css({width:'100px', height:'100px'});
     }
 });
$('.imgContainer')。追加(“”);
$('.imgContainer img#pic').load(函数(){
if($(this.width()==0&$(this.height()==0){
$(this.attr({src:'img/missing.jpg'})
.css({宽度:'100px',高度:'100px'});
}
});
也许有更好的方法可以做到这一点-但我不知道…我尝试使用
$(this).onerror=//一些函数
,但也不知道如何让它工作


任何帮助都将不胜感激……

问题的关键在于“加载”事件仅在成功加载图像时才会在图像上触发-因此,如果指定无效路径,加载事件将永远不会发生。您希望使用“错误”处理程序,如下所示:

var img = $("<img id='pic' src='/dynamically/created/path/to/img.jpg'>")
 .error(function(){
        $(this).attr({src: 'img/missing.jpg'})
               .css({width:'100px', height:'100px'});
 })
 .appendTo('.imgContainer');
var img=$(“”)
.错误(函数(){
$(this.attr({src:'img/missing.jpg'})
.css({宽度:'100px',高度:'100px'});
})
.appendTo(“.imgContainer”);
我已经简化了您的代码,所以顺序是:创建image元素,绑定错误事件处理程序,然后附加到文档中。我不知道这是否有任何实际的区别,但在映像有机会开始加载之前设置处理程序似乎更有意义(否则,从理论上讲,加载可能在分配事件之前发生)


此外,对宽度==0和高度==0的检查在所有浏览器中都不起作用。Chrome和Safari都为您提供了显示的“断开图像”图标的宽度和高度:18x18px。

我建议,在加载事件中,您使用指向missing.jpg的相同id的另一个图像替换该图像。不过,我不知道这是否管用。我只是觉得应该。谢谢你的建议——我会尝试一下。谢谢你让我知道-webkit浏览器中的维度检查错误。回答得很好-我将在周一测试它。再次感谢您的意见。很抱歉耽搁了这么长时间-我一直在度假。这个建议很有效,很好!我不知道有一个
.error()
函数。再次感谢。