2010-11-08 11 views

risposta

24

Ti piace questa:

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

In parole povere, un ciclo tra tutte le cellule e trovare il valore massimo, quindi applicare tale valore a tutte le cellule.

+0

+1 perché è breve, ma è possibile ottimizzarlo. Ad esempio, puoi rimuovere 'max === false ||'. E penso che dovresti spostare '$ (this) .height()' in una variabile, che ti salva un paio di chiamate a doppia funzione – Harmen

+0

Aspetta, l'hai già risolto. Questa è davvero un'ottima soluzione, penso che – Harmen

+0

@Harmen, grazie, ora usi 'Math.max()' che lo semplifica parecchio. –

0

Ci sono several plugins che possono farlo per voi. Tuttavia, il codice sarebbe simile a questa:

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

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

È possibile utilizzare jQuery con il seguente codice


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

Speranza che aiuta

+0

Aspetta, cosa sta succedendo qui: '$ (value) .height() = maxHeight'. Il setter richiede 'maxHeight' come argomento di funzione, mentre nessun argomento restituirà l'altezza. E perché non dovresti usare "questo" dopotutto? – Harmen

3

solo per essere diverso:

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

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

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

Hai davvero bisogno di salvare l'altezza di tutte le celle della tabella in un array? Ciò significherebbe che devi effettivamente scansionarli tre volte. La prima volta per ottenere tutte le altezze, una seconda iterazione per ottenere l'altezza massima e la terza volta per impostare l'altezza massima. – Harmen

+0

La raccolta dei rifiuti si prende cura dell'array alla fine. Non pensi che confrontare ogni altezza richiede un po 'di potenza della CPU? Math.max.apply() è estremamente efficiente. Scusa se ho postato qualcosa di diverso dalla norma. Se lo paragona, vince. Preferisco personalmente l'esempio di Tatu, le persone capiscono il concatenamento. –

+0

Potrebbe essere proprio lì, non posso più annullare il mio downvote, la prossima volta aggiungerò un commento prima di premere il pulsante di voto giù – Harmen

0

contribuisci all'esempio di @tatu ulmanen

Questo è ovvio, ma se si desidera solo per strech le righe con celle più alti avvolgere un ciclo tr :)

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