2012-06-25 23 views
5

मैं इस के साथ संघर्ष कर रहा हूं। मेरे पास वस्तुओं की एक सूची है और फ़ॉर्म के एक हिस्से पर जब कुछ मान्य है तो यह संबंधित सूची आइटम में "चेक" श्रेणी जोड़ता है।वर्ग "चेक" के साथ 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;} 

लेकिन मुझे लगता है कि प्रत्येक आइटम title छोड़कर वर्ग checked है की जाँच करने के jQuery की जरूरत है।

क्या यह करने योग्य है?

डेमो:http://jsfiddle.net/bQtEQ/1/

जवाब मैं अब के लिए धन्यवाद निम्नलिखित

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

कभी कभी, आप सवाल को देखो और आप क्यों वहाँ 10 जवाब नहीं हैं ... और आप इंतजार एक और दूसरा ... यही नहीं! –

+0

संभावित डुप्लिकेट [वर्ग द्वारा जेक्री गिनती तत्वों को लागू करने का सबसे अच्छा तरीका क्या है?] (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 तत्वों को तुरंत चालू करने के लिए jQuery के लिए कम समय। इसका मतलब है कि तेजी से निष्पादन का समय, खासकर पुराने ब्राउज़र पर।

8

यह आपको क्लास 'checked' के साथ <li> तत्वों की जरूरत नहीं है कि सभी को देना चाहिए वर्ग का शीर्षक:

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

हालांकि - अगर आप केवल चाहते थे चेक किए गए तत्वों की गिनती:

$('.checked').length 

पर्याप्त होना चाहिए।

+0

क्या बेन के उत्तर में चयनकर्ता का उपयोग करने के बजाय, इस तरह से ऐसा करने का कोई फायदा है? – Archer

+0

'li' जोड़ना प्रारंभ में तेज़ी से बनाता है, लेकिन तथ्य के बाद इसे फ़िल्टर करना इसे धीमा कर देता है। निश्चित रूप से बेंचमार्क के लिए दिलचस्प होगा। –

+3

@ आर्चर 'बेन' का उत्तर कहीं अधिक तेज़ है, क्योंकि यह [querySelectorAll] (https://developer.mozilla.org/en/DOM/Element.querySelectorAll) का उपयोग करता है, जो मूल जावास्क्रिप्ट है। – Engineer

0
$("li").each(function() { 
    if(!$(this).hasClass("title") && $(this).hasClass("checked")) { 
      alert("hah"); 
    } 
}); 
संबंधित मुद्दे