2010-07-06 7 views
5

Wie kolorieren gerade (oder ungerade) Tabellenspalten mit jQuery? (ohne Klassen manuell hinzufügen)jQuery: Hervorhebung gerade Spalten (nicht Zeilen)

Mein Markup ist:

<table> 
    <caption>Table caption</caption> 
    <thead> 
    <tr><th scope="col">Table header 1</th><th scope="col">Table header 2</th><th scope="col">Table header 3</th><th scope="col">Table header 3</th></tr> 
    </thead> 
    <tbody> 

     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 
     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 
     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 

     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 
    </tbody> 
</table> 

(es kann oder auch nicht Umfang attribs oder th Tags enthalten)

Antwort

6

Sie die :nth-child() selector dafür verwenden können:

$('table tr :nth-child(2n)').css('background-color', '#eee'); 

You can see a demo here, diese Version führt die Spalten, unabhängig davon, ob die Zelle eineist 0 oder <td> können Sie das dort hinzufügen (z.B. td:nth-child(2n)) wenn Sie nur das eine oder andere tun wollen. Wenn Sie die anderen Spalten auswählen möchten, tun Sie einfach 2n+1 stattdessen.

+0

+1: Vielen Dank für Ihren Kommentar in meiner Antwort und die richtige Lösung hier bieten. – Sarfraz

+0

Danke, das funktioniert gut (vorherige Version hat eine Art von Checkern;) – Adrian

+0

Brauchen mehr Rep zu upvote :) – Adrian

1

Bearbeiten: Aktualisiert, um meine Missdeutung der Frage zu beheben.

sollte diese Arbeit:

$('tr > :nth-child(even)').css('background-color','#eee'); 

oder

$('tr > :nth-child(odd)').css('background-color','#eee'); 
+0

Ken - OP malt Spalten, nicht Zeilen. : o) – user113716

+0

@patrick: Ups, du hast Recht. –

+0

Dieser ist Färbung Reihen, ich brauche * Spalten * – Adrian