2010-06-17 12 views
8

मेरे पास एक मानक यूएल निम्नानुसार है:सभी सूची वस्तुओं की कुल चौड़ाई की गणना?

<ul> 
    <li><a href="">Link</a></li> 
    <li><a href="">Link</a></li> 
    <li><a href="">Link</a></li> 
    <li><a href="">Link</a></li> 
    <li><a href="">Link</a></li> 
</ul> 

मैं सभी LI टैग के साथ संयुक्त गणना करने के लिए एक त्वरित & कुशल तरीका खोजने की कोशिश कर रहा हूं। वर्तमान में मेरे पास है:

var width = 0; 

$('ul li').each(function() { 
width += $(this).outerWidth(); 
}); 

मैं बस सोच रहा हूं कि लूप का उपयोग किये बिना एक ही परिणाम प्राप्त करने का एक तेज तरीका है?

आपकी मदद के लिए धन्यवाद!

उत्तर

4

प्राप्त करने के लिए बिल्कुल जो आप के बाद हैं, कोई नहीं है। यह सिर्फ एक ऐसा मामला नहीं है जो मौजूदा कार्यों के साथ अच्छी तरह फिट बैठता है, आपके जैसे लूप के पास यह सबसे तेज़ तरीका है। वहाँ एक .childWidth() या कुछ और कोर में डालने की बात है ... लेकिन मैं अपनी सांस :)

अन्य उत्तर पकड़ नहीं होगा अतिरिक्त स्थान सहित माता-पिता की चौड़ाई को शामिल किया जाएगा, कि आमतौर पर नहीं क्या आप के बाद कर रहे हैं है , तो अब के लिए ... आपके जैसा लूप के साथ छड़ी है। जो कुछ भी जोड़ा जाएगा, वह वही होगा जो वैसे भी काम करेगा (संभवतः समान कोड भी)।

+0

आह ठीक है, इसके लिए धन्यवाद - .childWidth() लगता है कि मैं क्या चाहता था - कभी नहीं! – Fred

0

आप उल तत्व में ही की चौड़ाई मिल सकता है, लेकिन है कि आप गोलियों और मार्जिन सहित चौड़ाई देना होगा:

var width = $("ul").outerWidth(); 
+0

अगर आपके पास ली के –

0

यह एक मेनू है और आइटम एक दूसरे के बगल कर रहे हैं (और नीचे नहीं), $('ul').outerWidth() आज़माएं।

[संपादित करें] ul की चौड़ाई तय की गई है, तो सूची के अंतिम तत्व का पता लगाएं और इसके दाएं ऑफसेट पर नज़र डालें। चूंकि ऑफसेट हमेशा मूल तत्व से संबंधित होता है, इसलिए आपको सभी बच्चों की कुल चौड़ाई प्राप्त करने के लिए offsetLeft और offsetWidth जोड़ना है।

+0

पर फ्लोट है तो काम न करें क्षमा करें, उल्लेख नहीं किया गया है, यूएल की एक निश्चित चौड़ाई है जो सभी सूची आइटमों की तुलना में अधिक है। – Fred

+0

उस स्थिति में, सूची में अंतिम तत्व के सही ऑफ़सेट को देखें। –