我正在尝试编写一段代码,当单击一个按钮时,它会检查图像列表,检查它是否具有“视频”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();
}
});
});
答案 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;