尝试更改图像状态时未捕获TypeError

时间:2012-09-25 14:01:53

标签: javascript jquery

我正在尝试编写一段代码,当单击一个按钮时,它会检查图像列表,检查它是否具有“视频”ID,如果是,则显示叠加并删除播放器在那里。

我一直收到这个错误:

Uncaught TypeError: Cannot call method 'indexOf' of undefined

以下是代码:

$("#actions .btn").click(function(){
       $('.span img').each(function(){
            if($(this).attr('id').indexOf('video') != -1){
                var spanid = $(this).attr('id').replace(/video/, '');
                $(this).removeClass('hideicon');
                $('#mediaplayer' + spanid + '_wrapper').remove();
            }
        });
});

1 个答案:

答案 0 :(得分:1)

如果您要查找的属性在元素上不存在,.attr()方法将返回undefined。我建议你为你的病情添加一个额外的检查:

var id = $(this).attr('id');
if(id && id.indexOf('video') != -1) {
    //OK!
}

来自文档:

  

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined

有趣的是,对于尚未设置的属性,本机getAttribute函数返回null。 jQuery,出于某种原因,explicity checks for this并返回undefined代替:

ret = elem.getAttribute(name);

// Non-existent attributes return null, we normalize to undefined
return ret === null ? undefined : ret;