2017-10-20 61 views
0

我有幾個寬度不同的元素。我需要循環每個,找到最寬的寬度,並設置所有的寬度。將所有元素設置爲最寬集合的寬度

<div id="mySet"> 
    <span>some content</span> 
    <span>more content</span> 
    <span>here content</span> 
</div> 

JS:

var widest = 0; 

$("#mySet span").each(function(){ 
    var this = $(this), 
     wdth = this.width(); 

    if(wdth > widest){ 
     widest = wdth; 

     $("#mySet span").each(function(){ 
      $(this).width(widest); 
     }); 
    } 

}); 

我想我能得到最大寬度,但每到寬度分配給每個元素的時間做我循環。似乎太多循環。

回答

1

替代循環得到最廣泛的:

// Using modern JavaScript: 
const widest = Math.max(...$("#mySet span").map((i, span) => $(span).width())); 

// Using older JavaScript: 
var widest = Math.max.apply(
    null, 
    $("#mySet span").map(function() { 
    return $(this).width(); 
    }) 
); 

然後$("#mySet span").width(widest);設置在一個全力以赴跨度的寬度。

+0

省略號做什麼? – santa

+1

在這種情況下,它需要map返回的數組中的每個寬度,並將每個作爲單獨的參數傳遞給max函數 – searlea

2

要設置寬度所有span,你只需要

$("#mySet span").width(widest); 

,這將設置寬度所有。所以把它放在循環之外,最後。

相關問題