使用jquery hasClass方法时如何获取div的id?

时间:2013-02-06 16:28:02

标签: jquery

此代码无效:

$("div").hasClass("testSection").attr("id");

我收到以下错误消息:

  

TypeError:$(...)。hasClass(...)。attr不是函数

知道问题可能是什么?

5 个答案:

答案 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") + " ");
});