函数内的Javascript代码未运行

函数内的Javascript代码未运行,javascript,jquery,Javascript,Jquery,我正试图触发img.onerror事件,但似乎无法找出代码的最后一行没有运行的原因。当我启动调试器时,它会到达错误事件绑定到映像的行,但是它永远不会到达带有this.src的行 $("img").each(function () { this.error(function () { alert("error!"); }) this.src = "data:image;base64,invalidDatalFTkSuQmCC"; }); 您必须包装此,

我正试图触发img.onerror事件,但似乎无法找出代码的最后一行没有运行的原因。当我启动调试器时,它会到达错误事件绑定到映像的行,但是它永远不会到达带有this.src的行

$("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):