2010-11-08 19 views

Antwort

24

So:

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

In einfachem Englisch, eine Schleife durch alle Zellen und finden Sie den Maximalwert, gelten dann diesen Wert auf alle Zellen.

+0

+1, weil es kurz ist, aber Sie können es optimieren. Sie können zum Beispiel 'max === false ||' entfernen. Und ich denke, Sie sollten '$ (this) .height()' in eine Variable verschieben, die Sie ein paar Doppelfunktionsaufrufe speichert. – Harmen

+0

Warten Sie, Sie haben es bereits behoben. Das ist eine wirklich gute Lösung, denke ich – Harmen

+0

@Harmen, danke, jetzt verwendet 'Math.max()' was vereinfacht es ein wenig. –

0

Es gibt several plugins, die dies für Sie tun können. Allerdings würde der Code wie folgt aussehen:

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

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

Sie können jQuery verwenden, um mit dem folgenden Code


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

Hoffe, es hilft

+0

Warte, was hier passiert: '$ (Wert) .height() = maxHeight'. Der Setter benötigt 'maxHeight' als Funktionsargument, während keine Argumente die Höhe zurückgeben. Und warum würdest du 'this' nicht doch benutzen? – Harmen

3

einfach anders zu sein:

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

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

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

Müssen Sie wirklich die Höhe aller Tabellenzellen in einem Array speichern? Das würde bedeuten, dass Sie sie dreimal durchsuchen müssen. Das erste Mal, um alle Höhen zu erhalten, eine zweite Iteration, um die maximale Höhe zu erhalten und das dritte Mal, um die maximale Höhe einzustellen. – Harmen

+0

Müllsammeln kümmert sich am Ende um das Array. Sie glauben nicht, dass der Vergleich jeder einzelnen Höhe CPU-Leistung erfordert? Math.max.apply() ist extrem effizient. Entschuldigung, ich habe etwas anderes als die Norm gepostet. Wenn Sie es benchmarken, gewinnt es. Ich bevorzuge Tatus Beispiel persönlich, die Leute verstehen die Verkettung. –

+0

Sie können direkt dort sein, ich kann meinen Downvote nicht mehr rückgängig machen, das nächste Mal werde ich nur einen Kommentar hinzufügen, bevor ich den unteren Abstimmknopf drücke – Harmen

0

Beitrag @tatu Ulmanens Beispiel

Dies ist offensichtlich, aber wenn Sie nur die Zeilen mit größeren Zellen Strech wollen eine tr Schleife wickeln :)

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