2010-11-08 12 views

Odpowiedz

24

Jak to:

var max = 0;  
$('table td').each(function() { 
    max = Math.max($(this).height(), max); 
}).height(max); 

w prostym języku angielskim, pętli wszystkich komórek i znaleźć maksymalną wartość, a następnie zastosować tę wartość do wszystkich komórek.

+0

+1, ponieważ jest krótki, ale można je zoptymalizować. Możesz na przykład usunąć "max === false ||". I myślę, że powinieneś przenieść '$ (this) .height()' do zmiennej, która oszczędza ci kilka podwójnych wywołań funkcji – Harmen

+0

Czekaj, już to naprawiłeś. To naprawdę dobre rozwiązanie Myślę, że – Harmen

+0

@Harmen, dzięki, teraz używa 'Math.max()', co upraszcza to całkiem sporo. –

0

Istnieje several plugins, który może to dla ciebie zrobić. Jednak kod wyglądałby następująco:

var tallest = 0; 
$('table td').each(function() { 
    if (tallest < $(this).height()) { 
    tallest = $(this).height(); 
    } 
}); 

$('table td').css({'height': tallest}); 
-1

Można użyć jQuery z następującego kodu


var maxHeight = 0; 
$('#yourTableID td').each(function(index, value) 
{ 
if ($(value).height() > maxHeight) 
maxHeight = $(value.height()); 
}).each(function(index, value) { 
$(value).height() = maxHeight; 
}); 

Nadzieja pomaga

+0

Czekaj, co się tutaj dzieje: '$ (value) .height() = maxHeight'. Seter wymaga 'maxHeight' jako argumentu funkcji, podczas gdy żadne argumenty nie zwrócą wysokości. I dlaczego nie użyłbyś tego "mimo wszystko"? – Harmen

3

Wystarczy być różne:

var heights = $('td').map(function() { 
    return $(this).height(); 
}).get(); 

var maxHeight = Math.max.apply(Math, heights); 

$('td').css('height', maxHeight); 
+0

Czy naprawdę potrzebujesz zapisać wysokość wszystkich komórek tabeli w tablicy? To oznaczałoby, że musisz przeskanować je trzy razy. Za pierwszym razem, aby uzyskać wszystkie wysokości, drugą iterację, aby uzyskać maksymalną wysokość i po raz trzeci, aby ustawić maksymalną wysokość. – Harmen

+0

Zbieranie śmieci zajmuje się tablicą na końcu. Nie myślisz, że porównywanie każdej wysokości wymaga mocy procesora? Math.max.apply() jest niezwykle wydajny. Przepraszam, że napisałem coś innego niż norma. Jeśli ją porównujesz, wygrywa. Wolę przykład Tatu osobiście, ludzie rozumieją łańcuch. –

+0

Możesz być na miejscu, nie mogę już cofnąć mojego przygnębienia, następnym razem dodam komentarz, zanim nacisnę przycisk głosowania w dół. – Harmen

0

przyczynić @tatu ulmanen na przykład

To jest oczywiste, ale jeśli po prostu chcesz strech wiersze z wyższych komórek owinąć pętlę tr :)

$('table tr').each(function(){ 
    var max = 0; 
    $(this).find('td').each(function(){ 
     max = Math.max($(this).height(), max); 
    }).height(max); 
}); 
Powiązane problemy