2013-10-03 252 views
1

我知道,如果我有這樣的HTML:jquery選擇匹配所有元素?

<ul> 
    <li class="list-item test">1</li> 
    <li class="list-item">2</li> 
    <li class="list-item">3</li> 
</ul> 

然後,我可以做jQuery中的以下內容:

$('ul > li').is('.test'); 

,它將返回正確的,因爲,因爲LIS的一個擁有一流的檢測。我想要的是一種方法,只有當所有元素匹配選擇器纔會返回true,如下所示:

$('ul > li').all('.test'); // false; 
$('ul > li').all('.list-item'); // true 

是否存在這樣的事情?

感謝,

+0

可能重複[檢查是否所有項目都具有相同的類](http://stackoverflow.com/questions/7485066/check-if-all-items-have-the-same-class) –

回答

5

這應該這樣做...

var allTest = $("ul > li.test").length === $("ul > li").length; 

或...

var allTest = $("ul > li:not(.test)").length === 0; 

首先做一個檢查,看看數量具有類測試的li元素與li元素的數量相同(不管類)。

第二隻檢查有多少人沒有班級考試的人數。

+0

謝謝。這是我一直在使用的,這是一個遺憾,這不是內置於jQuery(我想可能會更有效率。)我想我剛剛被LINQ寵壞了。 – JoeS

+0

啊,我更喜歡第二種方法。這看起來會更快,因爲它不涉及搜索所有東西兩次(我正在處理很多元素)。感謝你,我會盡快將它標記爲最佳答案,只要SO會讓我。 – JoeS

+0

我認爲第二個將是最有效的方式(當然不是我建議的2)。有可能改進它,但這是可讀和功能性的,所以我會去那個。 **編輯:**你ninja'd我 - 我同意你:) – Archer

相關問題