2009-06-11 11 views
6

Ho una tabella con espansione e compressione di righe, con colonna ordinabile. Di seguito è riportato il mio codice, ci sono modi per migliorarne le prestazioni. E leggere l'aggiunta di un gruppo completo di righe in dom migliora le prestazioni, ma se faccio fuori da $ .each() il ciclo genera un errore. teble demoColorazione riga alternativa in jquery

var alt = true; 
var altSub = true; 

$.each(myData, function(index, row) { 

    var noRow = $(row).length; 
    var firstRow = $(row[0]); 

    for (var i=0; i < noRow; i++) { 
     if(firstRow.attr('id') == $(row[i]).attr('id')) { 
      if(alt == true) { 
       firstRow.removeClass("odd").addClass("even"); 
       alt = !alt; 
       altSub = true; 
      } else if(alt == false) { 
       firstRow.removeClass("even").addClass("odd"); 
       alt = !alt; 
       altSub = true; 
      } 
     } else { 
      if(altSub == true) { 
       $(row[i]).removeClass("alt_row_sub").addClass("alt_row_sub2"); 
       altSub = !altSub; 
      } else if(altSub == false) { 
       $(row[i]).removeClass("alt_row_sub2").addClass("alt_row_sub"); 
       altSub = !altSub; 
      } 
     } 
    } 
    $table.children('tbody').append(row); 
}); 

link text

+0

per favore, fornire una demo più grande della tabella – Natrium

+1

e perché questo è un wiki comunità? È una bella domanda perfetta. – Natrium

+0

@Natrium - Ho aggiornato l'immagine. – vinay

risposta

2

Tutorials:Zebra Striping Made Easy dal jQuery è un grande tutorial su come fare lo striping zebra.

+0

questa striscia zebra sarà applicabile nel mio caso. Se guardi la mia immagine demo, ti dà un'idea. Il mio tavolo è collassato ed espanso, a causa di ciò il colore nel gruppo. – vinay

+0

Una volta ho sentito qualcuno chiamarlo "pigiama striping" :-) – Natrium

+0

Ho ricordato la citazione della Guida alla Galassia di Hitchikers "Oh, è stato facile", dice Man, e per un bis continua a dimostrare che il nero è bianco e ottiene lo stesso ucciso sul prossimo passaggio a strisce. "" –

15

È possibile trovare utili i selettori :even e :odd.

È quindi possibile utilizzarli in questo modo:

$('.stripyTable tr:even').addClass('even'); 
$('.stripyTable tr:odd').addClass('odd'); 
$('.stripyTable .submenu tr:even').addClass('alt_row_sub'); 
$('.stripyTable .submenu tr:odd').addClass('alt_row_sub2'); 

L'altra cosa da considerare è se è possibile ottenere il diverso stile delle sottosezioni solo con i CSS, quindi nel vostro JS avete solo bisogno di preoccuparsi di applicare le classi pari/dispari. Il CSS potrebbe essere simile:

.odd { background-color: blue; } 
.even { background-color: white; } 
.sub .odd { background-color: green; } 
.sub .even { background-color: yellow; } 
+0

Grazie per la risposta, ma non funziona correttamente. sembra questo http://www.freeimagehosting.net/uploads/da55af5e55.gif – vinay

+1

Immagino che tu abbia delle righe nascoste che stanno facendo apparire errate le strisce. Ma senza vedere la tua fonte è difficile capire cosa lo stia causando. L'utilizzo del: selettore visibile quando si applica lo striping potrebbe essere d'aiuto. – thatismatt

+1

Ecco un codice che si spera possa illustrare il mio punto: http://jsbin.com/iwuqe – thatismatt

0

si è all'interno di ogni ciclo, fare questo:

$.each(myData, function(index, row) { 

     if(index % 2 == 0) 
     { 
      row.addClass("AltRow"); 
     } 
)}; 
Problemi correlati