未捕获的TypeError:对象#<htmldivelement>没有方法'attr'</htmldivelement>

时间:2012-11-23 16:51:03

标签: javascript jquery

我试图用类工具提示抓住我的div。

然后做这样的事情:

var schemes = $(".tooltip");

for (var i in schemes) {
    var scheme = schemes[i];
    console.log(scheme.attr("cost"));
}

但它引发了上述错误。我错过了什么? (显然我是javascript + jquery的新手)

2 个答案:

答案 0 :(得分:33)

如果使用for-loop迭代jQuery集,则应使用eq()方法获取元素,但不使用方括号表示法(即[])。像$(".tooltip")[i]这样的代码会选择DOM元素,但不是 jQuery对象。

var schemes = $(".tooltip");
for (var i = 0; i < schemes.length; i++) {
    var scheme = schemes.eq(i);
    console.log(scheme.attr("cost"));
}

但是,您可以始终使用each()来迭代jQuery集:

$(".tooltip").each(function() {
    var scheme = $(this);
    console.log(scheme.attr("cost"));
});

答案 1 :(得分:4)

var schemes = $(".tooltip");

schemes.each(function(index, elem) {
    console.log($(elem).attr('cost'));
});

据我所知,作为旁注“cost”不是任何元素的有效属性,你可能应该使用数据属性。