此代码无效:
$("div").hasClass("testSection").attr("id");
我收到以下错误消息:
TypeError:$(...)。hasClass(...)。attr不是函数
知道问题可能是什么?
答案 0 :(得分:5)
.hasClass("testSection")
返回一个布尔值。它不会将jQuery对象返回到链。
另外,您确实理解在匹配多个元素时,使用.attr
等特定函数将从第一个选定元素返回。
$("div").attr('id'); => $('div').eq(0).attr('id');
答案 1 :(得分:3)
您想使用filter
:
$("div").filter(".testSection").attr("id");
hasClass
将返回一个布尔值(true / false),而不是一个具有attr
函数的jQuery对象。
答案 2 :(得分:3)
问题是因为hasClass()
返回一个布尔值,而不是一个jQuery对象。因此,在布尔值上调用attr()
会导致您看到的错误。
假设只有一个具有指定类的div,您可以在选择器中使用该类:
var id = $("div.testSection").prop("id");
如果该类有多个div,则需要循环:
$("div.testSection").each(function() {
var id = this.id;
// do something with the id...
});
答案 3 :(得分:2)
hasClass将返回true或false而不是object,使用它,
$("div.testSection")
答案 4 :(得分:0)
如果你想获得一组元素的所有id,你需要使用for构造或jQuery的每个函数迭代它们。我还建议在attr()上使用prop(),尽管在这种情况下它并不重要:
JSFiddle示例: http://jsfiddle.net/turiyag/QXyWV/1/
$.each($("div.foo"),function(index,value) {
log($(value).prop("id") + " ");
});