2012-01-13 8 views
9
का उपयोग कर तत्वों का एक सेट

मैं एक त्वरित Jsbin बना दिया है की सबसे बड़ी चौड़ाई: http://jsbin.com/ujabew/edit#javascript,html,liveगणना jQuery

क्या मैं प्राप्त करने के लिए कोशिश कर रहा हूँ पता लगाने के लिए जो सबसे बड़ा <section> लिंक से 3 से बाहर है। तो लूप रन के बाद, मुझे क्या चाहिए, var width है जो कि किसी भी चौड़ाई के लिए संभव है कि सबसे बड़ी संभव संख्या पर सेट हो। प्रगति में

कोड लिंक

+3

Insteading, अधिकतम चौड़ाई अब तक पाया पर नज़र रखें। 'var max = 0; लूप (यदि यह। विड्थ> अधिकतम तो अधिकतम = this.width); 'खराब छद्म कोड में। –

+0

@MarcB यह मेरे लिए बहुत अच्छा psuedo कोड है। –

उत्तर

31

यहाँ:

var maxWidth = Math.max.apply(null, $(elems).map(function() { 
    return $(this).outerWidth(true); 
}).get()); 

लाइव डेमो:http://jsfiddle.net/rM4UG/

+0

यह एक अच्छा है। – powerbuoy

+0

बहुत सरल, अच्छी नौकरी – einar

+0

अच्छा है। जब मैंने इसका इस्तेमाल किया, तो यह केवल शरीर के अंदर तत्वों के लिए था जिसमें मार्जिन था: ऑटो (केंद्रित उद्देश्यों के लिए)। यदि आप आईई (मानक मोड) में कुछ ऐसा कर रहे हैं, तो गणना से मार्जिन को हटाने के लिए 'बाहरी विड्थ' फ़ंक्शन में पारित सत्य को हटा दें और आप सुनहरे हो! –

0

मेरा मानना ​​है कि आप underscore पुस्तकालय में देखना चाहते हैं में पोस्ट किया। विशेष रूप से, अधिकतम विधि

0
$(document).ready(function(){ 
    var maxWidth = 0; 
    $('section').each(function(){ 
    w = $(this).outerWidth(true);  
    if (w > maxWidth) 
      maxWidth = w; 
    }); 
}); 
2

मार्क बी की टिप्पणी बाहर Fleshing, Math.max() का उपयोग कर:

$(document).ready(function(){ 
    var maxWidth = 0; 
    $('.content ul li').each(function(){ 
    var itemWidth = $(this).outerWidth(true); 
    maxWidth = Math.max(maxWidth, itemWidth) 
    }); 
}); 
0

बदलें .each() लूप करने के लिए थाई रों:

var thisWidth = $(this).outerWidth(true); 

if (thisWidth > width) { 
    width = thisWidth; 
} 
0

यह मेरा विचार

$ (document) .ready (function() {

var elements = $('.content ul li'); 
var count = elements.length -1; 
var width = [];   

elements.each(function(n){ 
    width.push($(this).outerWidth(true)); 
    if (count == n) { 

     width = Math.max.apply(Math, width); 

    } 
}); 

}) था,

मैंने तत्वों की मात्रा की गिनती जोड़ दी और प्रत्येक लूप होने पर सबसे बड़ी संख्या प्राप्त करने के लिए Math.max चलाता है।

0

मैंने अभी इसके बारे में एक कार्य लिखा है। मैंने सोचा कि यह दूसरों की मदद कर सकता है। (jQuery) बस चौड़ाई जोड़ने का

$.fn.largerWidth = function() { //function(p) 
            // where 'p' can be clientWidth or offsetWidth 
            // or anything else related to width or height 
    var s = this,m; 
    for (var i = 0; i < s.length; i++) { 
     var w = s[i].offsetWidth; // s[i][p]; 
     (!m || w > m) ? (m = w) : null 
    } 
    return m; 
} 
संबंधित मुद्दे