2013-10-15 3 views
7

HTML:गणना दिखाई divs

<div class="male">...</div> 
<div class="male">...</div> 
<div class="female">...</div> 

मैं, (उनमें से अंदर और अधिक divs .male के बिना) वर्ग के रूप में श्रेणियों के साथ कई divs है स्टार्टअप पर मैं

$('.male').size(); // Returns 40 items for example 

साथ उन्हें गिनने (मुझे पता है size(); बहिष्कृत है लेकिन हम jQuery के पुराने संस्करण का उपयोग करते हैं)

आवेदन के दौरान, कुछ divs i बारी एक विशिष्ट क्लिक के बाद, मैं दृश्य आइटमों को रिक्त करना चाहता हूं।

मैं

$('.male :visible').size(); 

की कोशिश की लेकिन यह मुझे एक भयानक उच्च संख्या दिया था, 3050 की तरह है, इसलिए मुझे लगता है चयनकर्ता .male या कुछ और अंदर दिखाई देने वाले सभी divs गिनती करता है।

क्या कोई मुझे विशिष्ट वर्ग के साथ केवल दृश्य divs के लिए सही चयनकर्ता सलाह दे सकता है?

+0

आप सभी तत्वों (न केवल divs) .male कंटेनर के अंदर जमा कर रहे हैं। $ ('Div.male: visible') के बारे में क्या। आकार()? – opalenzuela

+0

यहां तक ​​कि पुराने संस्करणों में 'लम्बाई' भी है, है ना? ;) – ThiefMaster

+0

@ थिफमास्टर मैंने 'लम्बाई()' के साथ प्रयास किया और यह मुझे एक त्रुटि दे दी, मैंने सूत्रों के बारे में एक टिप्पणी छोड़ दी, मामले में .. :-) – DanFromGermany

उत्तर

19

आप .male और :visible के बीच की जगह को दूर करने की जरूरत है, अन्यथा आप.male भीतर दिखाई देने वाले सभी तत्वों लक्षित कर रहे हैं:

$('.male:visible').size(); 

Here's a quick JSFiddle demo दोनों दिखा।

अद्यतन: jQuery 1.8 के बजाय जावास्क्रिप्ट का length संपत्ति का उपयोग कर के पक्ष में अपनी size() विधि अब मान्य। अब हम कर सकते हैं:

$('.male:visible').length; 
8

अपने चयनकर्ता से रिक्ति निकालें:

$('.male:visible').size(); 
+1

अविश्वसनीय समय के साथ काम करता है! – mavrosxristoforos