2012-06-25 26 views
5

Im與這一個掙扎。我有一個項目列表,並在表單的一部分,當有些事情已經驗證它增加類「檢​​查」到相應的列表項。jquery計數與「檢查」類的項目

<ul> 
<li class="title">Checklist</li> 
<li class="checkType checked">Card Type</li> 
<li class="checkNumber checked">Card Number</li> 
<li class="checkName checked">Name on Card</li> 
<li class="checkMonth checked">Expiry Month</li> 
<li class="checkYear checked">Expiry Year</li> 
<li class="checkCode checked">Security Code</li> 
</ul> 

.title{font-size:23px; font-weight:bold;} 
.checked{ color:#f00;} 

但我需要jQuery來檢查每個項目都有類checked EXCEPT title

這是可行的嗎?

演示:http://jsfiddle.net/bQtEQ/1/

感謝的答案我現在有以下

 var counting = $("li.checked:not(.title)").length; 
    if (counting == 6){ 
     console.log(counting); 
    } 
+8

有時候,你看看這個問題,你想知道爲什麼有沒有10個回答......你再等第二次......咚! –

+0

[Jquery按類來計數元素的可能的重複是什麼是最好的方式來實現這個?](http://stackoverflow.com/questions/2727303/jquery-counting-elements-by-class-what-is-the-best這個) – Esailija

+0

根本不重複。 – Archer

回答

9

這是可行的用1個簡單選擇

$("li.checked:not(.title)").length 

這裏的優點,除了具有進行編碼少,是該:not()選擇器搜索期間考慮進來,以減少結果集。這意味着更少的時間讓jQuery實例化dom元素。這意味着更快的執行時間,特別是在較舊的瀏覽器上。

8

這應該給你所有的<li>元素與類「checked」不具備的類標題:

$('li.checked').not('.title').length 

但是 - 如果您只想要檢查元素的數量:

$('.checked').length 

應該就足夠了。

+0

這樣做是否有優勢,而不是在Ben的答案中使用選擇器? – Archer

+0

添加'li'使得它初始化速度更快,但過濾後的速度會降低速度。肯定會對基準有興趣。 –

+3

@Archer'Ben'的答案要快得多,因爲它使用了[querySelectorAll](https://developer.mozilla.org/en/DOM/Element.querySelectorAll),這是本機javascript。 – Engineer

1
$('.checked').not('.title').length == $("ul li").length -1 
0
$("li").each(function() { 
    if(!$(this).hasClass("title") && $(this).hasClass("checked")) { 
      alert("hah"); 
    } 
});