2013-06-25 55 views
1

這有點難以解釋,但我會嘗試。更改所有div類與適合與大多數內容div

是否有一種簡單的方法可以將所有具有相同類的div的寬度設置爲大多數內容的寬度。

例如,如果我有三個div的相同類別,我希望他們都具備一個具有最大寬度的寬度:

+------------+ 
|asddasadsdsa| 
+------------+ 
|asdadsdsas | 
+------------+ 
|   | 
+------------+ 

或像這樣:

+---------+ 
|asd  | 
+---------+ 
|   | 
+---------+ 
|adsaaaaaa| 
+---------+ 

類一張桌子,但在我的情況下,divs分散在不同的列表中。

+1

只需使用''

不要的東西在複雜:) – VisioN

+0

請發佈您到目前爲止嘗試過的代碼。 –

+0

@VisioN閱讀最後一行。 –

回答

2

簡單地通過所有div的循環,收集最寬的寬度,畢竟它設置爲你的類:

var maxWidth = 0; 
$('.yourclass').each(function() { 
    maxWidth = Math.max(maxWidth, $(this).width()); 
}).width(maxWidth); 
+1

爲什麼不簡單'maxWidth = Math.max(maxWidth,$(this).width());'在函數中? – HBP

+0

不錯的主意,改變了! –

0

你可以做到這一點 -

var biggiWidth = 0; 

$('.class').each(function(){ 
    biggiWidth = $(this).width() > biggiWidth ? $(this).width() : biggiWidth; 
}); 

$('.class').width(biggiWidth); 
0

一旦我嘗試使用CSS。

$('.class').css({"width": "auto", "white-space": "nowrap"}); 
1

另一個變化:

var widths = []; 
$('div') 
    .each(function() { widths.push($(this).width()); }) 
    .width(Math.max.apply(null, widths)); 
+0

我認爲你的'null'不合適。我認爲你的意思是成爲'apply'這個'thisArg'。就像現在,你將它傳遞給寬度。 –

+0

@JamesMontagne - 是的。感謝您指出。 :) – techfoobar

0

只要是不同的......

var maxWidth = Math.max.apply(null, $("div").map(function(){ 
    return $(this).width(); 
})); 

http://jsfiddle.net/rEBrF/1/