2

此代码不起作用:

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

我收到以下错误消息:

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

知道问题可能是什么吗?

4

5 回答 5

5

.hasClass("testSection")返回一个布尔值。它不会返回要链接的 jQuery 对象。

你也明白,当匹配多个元素时,使用特定的函数就像.attr会从第一个选定的元素返回。

$("div").attr('id'); => $('div').eq(0).attr('id');
于 2013-02-06T16:28:35.153 回答
4

问题是因为hasClass()返回一个布尔值,而不是一个 jQuery 对象。因此,调用attr()布尔值会导致您看到的错误。

假设只有一个具有指定类的 div,您可以在选择器中使用该类:

var id = $("div.testSection").prop("id");

如果该类有多个 div,则需要循环:

$("div.testSection").each(function() {
    var id = this.id;
    // do something with the id...
});
于 2013-02-06T16:30:29.773 回答
3

你想使用filter

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

hasClass将返回一个布尔值(真/假),而不是具有attr函数的 jQuery 对象。

于 2013-02-06T16:29:06.177 回答
2

hasClass 将返回 true 或 false 不是对象,使用这个,

$("div.testSection")
于 2013-02-06T16:29:14.850 回答
0

如果您希望获取一组元素的所有 id,则需要使用 for 构造或 jQuery 的 each 函数对它们进行迭代。我还建议使用 prop() 而不是 attr(),尽管在这种情况下它并不重要:

JSFiddle 示例:http: //jsfiddle.net/turiyag/QXyWV/1/

$.each($("div.foo"),function(index,value) {
    log($(value).prop("id") + " ");
});
于 2013-02-06T16:41:28.277 回答