函数内的Javascript代码未运行
我正试图触发img.onerror事件,但似乎无法找出代码的最后一行没有运行的原因。当我启动调试器时,它会到达错误事件绑定到映像的行,但是它永远不会到达带有this.src的行函数内的Javascript代码未运行,javascript,jquery,Javascript,Jquery,我正试图触发img.onerror事件,但似乎无法找出代码的最后一行没有运行的原因。当我启动调试器时,它会到达错误事件绑定到映像的行,但是它永远不会到达带有this.src的行 $("img").each(function () { this.error(function () { alert("error!"); }) this.src = "data:image;base64,invalidDatalFTkSuQmCC"; }); 您必须包装此,
$("img").each(function () {
this.error(function () {
alert("error!");
})
this.src = "data:image;base64,invalidDatalFTkSuQmCC";
});
您必须包装
此
,使其成为jQuery对象:
$(this).error....
控制台也是您的朋友,您可以通过当前代码看到:
Uncaught TypeError: Object #<HTMLImageElement> has no method 'error'
uncaughttypeerror:对象#没有方法“error”
在每个
回调函数中,此
是对img
DOM节点(HTMLImageElement
)的引用。它不是jQuery集合。使用,$(this).error(…)
可以解决此问题
由于您似乎正在将类似的回调绑定到每个错误
事件,并设置相同的src
属性,因此您可以将代码简化为:
$('img').error(function () {
alert('error');
}).prop('src', 'data:image;base64,invalidDatalFTkSuQmCC');
很酷,它开始工作了。第一个“this”需要是jquery对象,第二个是常规js对象(不是用$包装的)(this):