2012-03-20 12 views
6

Ho la mia impostazione tabella per lo striping Zebra, ma come faccio a rendere il colore della riga alternato per 2 righe anziché una singola riga?Colore della riga della tabella alternata, ma con 2 righe di dati

mio markup dei dati si presenta così:

<tr> 
     <td>@task.TaskNum</td> 
      <td>@task.RepiarTime</td> 
      <td>Priority Club</td> 
      <td>SD</td> 
      <td>Commercial</td> 
      <td>Reg Commercial</td> 
      <td>After Hours</td> 
     </tr> 
     <tr><td colspan="7"> 
       @task.Description.ToString() 
      </td></tr> 

Sto usando questo per tracciare linee in esso:

$(document).ready(function() { 
    $(".stripeMe tr").mouseover(function() { $(this).addClass("over"); }).mouseout(function() { $(this).removeClass("over"); }); 
    $(".stripeMe tr:even").addClass("alt"); 
}); 
+0

aggiungere una classe alternativo per le righe desiderate stile. Dubito che sarai in grado di fare affidamento sulle regole CSS per questo. –

risposta

1

perché non provare nth-child? Qui ci sono un sacco di varianti qui. How nth-child works. Sono sicuro che puoi usare lo pseudo: al passaggio del mouse .mouseover in javascript.

6

Qualcosa del genere dovrebbe funzionare:

$(".stripeMe tr").each(function(i){ 
    if (i%4 < 2){ 
     $(this).addClass("alt"); 
    } 
}); 
1

Provare a utilizzare .filter e ottenere il index() % 3 o (($(this).index()+1) % 3 == 0). Vedere codice qui sotto,

DEMO

$(document).ready (function() { 
    $('#myTable tr').filter(function() { 
     //or (($(this).index()+1) % 3 == 0) if you want 3rd row 
     //to be highlighted first. 

     return ($(this).index() % 3 == 0); 
    }).addClass('alt'); 
}); 
0

Usa jquerys n-esimo figlio in questo modo:

$(document).ready(function() { 
    $(".stripeMe tr").mouseover(function() { $(this).addClass("over"); }).mouseout(function() { $(this).removeClass("over"); }); 
    $(".stripeMe tr:nth-child(3n)").addClass("alt"); // 3n selects every third element 
}); 
0

Ci dovrebbe essere un modo in CSS per fare questo, ma se si vuole jQuery provare questo jsFiddle example.

jQuery:

var index = 0; 
$('tr').each(function() { 
    $(this).addClass((index <= 1) ? 'odd' : 'even'); 
    index++; 
    if (index == 4) index = 0; 
});​ 

CSS:

.odd { 
    background: #999; 
} 
.even { 
    background: #ddd; 
}​ 
4

Per fare striping ogni due righe:

$('.stripeMe tr:nth-child(3n+3)').addClass('alt'); 
$('.stripeMe tr:nth-child(3n+4)').addClass('alt'); 
+3

Penso che intendessi 4n + 3 e 4n + 4? – PerryJ

+1

Con l'addendum di @ PerryJ, penso che questa sia la risposta più semplice e migliore. Grazie! –

Problemi correlati