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

3

这段代码无法正常工作:

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

我收到了以下错误信息:

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

有什么想法,可能是什么问题?

.hasClass("testSection") 返回 true 或 false,这就是为什么它不起作用。你想选择具有类 testSection 的 div 吗? - t.niese
5个回答

5

.hasClass("testSection")返回一个布尔值。它不会返回jQuery对象以进行链式操作。

此外,您需要了解,当匹配多个元素时,使用特定函数(如.attr)将从第一个选定的元素返回结果。

$("div").attr('id'); => $('div').eq(0).attr('id');

5
问题出在hasClass()返回的是一个布尔值,而不是jQuery对象。因此,在布尔值上调用attr()会导致您看到的错误。
假设只有一个带有指定类的div,您可以在选择器中使用该类:
var id = $("div.testSection").prop("id");

如果有多个class为的div,您需要循环:
$("div.testSection").each(function() {
    var id = this.id;
    // do something with the id...
});

3
你想要使用 filter
$("div").filter(".testSection").attr("id");

hasClass方法返回一个布尔值(true/false),而不是具有attr函数的jQuery对象。


2

hasClass将返回true或false而不是对象,请使用此方法,

$("div.testSection")

0
如果您想获取一组元素的所有ID,您需要使用for循环或jQuery的each函数进行迭代。我还建议在此情况下使用prop()而不是attr(),尽管这并不重要:
JSFiddle示例: http://jsfiddle.net/turiyag/QXyWV/1/
$.each($("div.foo"),function(index,value) {
    log($(value).prop("id") + " ");
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接