函数内的Javascript代码没有运行

时间:2014-04-02 14:50:57

标签: javascript jquery

我正在尝试触发img.onerror事件,但似乎无法弄清楚为什么我的代码的最后一行没有运行。当我启动调试器时,它会到达错误事件绑定到图像的行,但它永远不会到达带有this.src的行。

$("img").each(function () {

    this.error(function () {
        alert("error!");
    })

    this.src = "data:image;base64,invalidDatalFTkSuQmCC";
});

http://jsfiddle.net/RK6G9/

2 个答案:

答案 0 :(得分:2)

你必须包装this以使其成为jQuery对象:

$(this).error....

控制台也是你的朋友,你会看到你得到的当前代码:

Uncaught TypeError: Object #<HTMLImageElement> has no method 'error'

答案 1 :(得分:1)

each回调函数this内是对img DOM节点(HTMLImageElement)的引用。它不是不是一个jQuery集合。使用,$(this).error(...)应解决问题。

由于您似乎将类似的回调绑定到每个error事件,并设置了相同的src属性,因此您可以将代码简化为:

$('img').error(function () {
    alert('error');
}).prop('src', 'data:image;base64,invalidDatalFTkSuQmCC');