2013-02-06 18 views
1

此代码是不工作:如何在使用jquery hasClass方法时获得div的id?

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

我收到以下错误信息:

TypeError: $(...).hasClass(...).attr is not a function

任何想法,问题可能是什么?

+0

'.hasClass( “testSection”)'返回true或错误,这就是为什么它不起作用。你想选择类'testSection'的div吗? –

回答

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... 
}); 
+0

干杯,这正是我需要的! – Bobby

5

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

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

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

感谢Vega更新我的jQuery知识 –

2

你想用filter

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

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

1

hasClass将返回true或false没有反对,用这个,

$("div.testSection") 
0

如果您希望获取一组元素的所有id,则需要使用for构造或jQuery的每个函数来遍历它们。我还建议使用道具()在ATTR(),尽管在这种情况下,它没有多大关系:

的jsfiddle例如: http://jsfiddle.net/turiyag/QXyWV/1/

$.each($("div.foo"),function(index,value) { 
    log($(value).prop("id") + " "); 
}); 
相关问题