2013-02-06 17 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") + " "); 
}); 
相關問題