2010-08-13 40 views
1

例如,我不得不手動做這樣的:檢查所有div具有相同的類或不

function checkDivUppersClosed() { 
    var allOpened = true; 
    $('.classUpper').each(function (index, domEle) { 
     allOpened &= $(this).parent().hasClass('closed'); 
    }); 
    return allOpened;   
} 

我知道,如果我選擇$('.closed').size()將返回長度爲好。但就我而言,一些divs擁有class classup,但根本沒有。

+0

「.closed」代表隱藏嗎?如果是這樣,你可以使這個*更短,例如'$('。classUpper:visible')。length === 0'將意味着它們全部關閉。 – 2010-08-13 11:04:05

+1

所以你只是想要所有的共同課堂的div?或者,正如標題所述,你想知道所有的div是否有相同的類,並返回什麼?從你的代碼片段看來,你正在尋找前者。 – 2010-08-13 11:07:10

+0

同意詹姆斯 - 你能否讓這個問題更清楚一點?你究竟想達到什麼目標?示例標記也可能有所幫助。 – 2010-08-13 11:12:09

回答

3

能做你現在的文字版本,請檢查你可以這樣做:

return $('.classUpper').parent(':not(.closed)').length; 

這將返回未關閉計數(這些元素的父母那:not()closed類)。您可以將該數字用作真/假檢查,或者添加=== 0以明確。

但如果要添加的closed類是隱藏它們,可以使用:visible選擇,就像這樣:

return $('.classUpper:visible').length === 0; 
+0

是'.size()'和'.length'是一回事嗎?我以爲jQuery只有'.size()'和數組有'.length'? – 2010-08-13 11:19:19

+0

@Bob - 一個jQuery對象*是一個DOM元素數組,如果你[看看源代碼](http://github.com/jquery/jquery/blob/master/src/core.js#L180),調用'.size()'只是'.length'的包裝:) – 2010-08-13 11:20:27

+0

我知道它裏面有一個dom元素數組,但我認爲長度是私有的,我不知道屬性是由jQuery的代碼維護 – 2010-08-13 11:26:21

-1

爲什麼不:

$('.classUpper .closed') 
+0

這將檢查* same *元素上的兩個類,他檢查子級上的一個類,父級上的另一個類。 – 2010-08-13 11:05:03

+0

好點!編輯。 – 2010-08-13 11:05:57

+0

@Bobby - 現在它檢查一個關閉的孩子*類,而不是父母:) – 2010-08-13 11:07:13

-1

如果你只是想對符合條件的,那麼你的一些元素進行操作可以使用:

$('.classUpper.closed') 
+0

這不是提問者正在使用的結構,正如Nick指出的那樣(這是一個非常容易混淆的問題!)。我認爲結構是這樣的:

2010-08-13 11:29:13

相關問題