2011-09-16 8 views
1

J'ai donc une table et je veux définir un style dans tous les éléments <tr> mais le premier. Exemple:Comment sélectionner les nœuds enfants mais le premier élément

<table> 
    <tr><th>This receives header styles</th></tr> 
    <tr><td>This receives item styles</td></tr> 
    <tr><td>This receives item styles</td></tr> 
    <tr><td>This receives item styles</td></tr> 
</table> 

Je sais que je dois utiliser des sélecteurs mais je ne sais pas comment et ne peut pas trouver sur le web = S

+1

[Selectors de w3c avec les versions CSS] (http://www.w3.org/TR/css3-selectors/#selectors) –

Répondre

6

Le sélecteur frère général ~ vous permet de sélectionner chaque élément certains vient après l'autre. Vous pouvez utiliser ce sélecteur:

table tr:first-child ~ tr 

Fonctionne dans IE7 +.

Si vous pouvez modifier votre code HTML pour le rendre plus sémantique, vous pouvez placer votre première rangée avec les th cellules dans un thead, et le reste dans un tbody:

<table> 
    <thead> 
    <tr><th>This receives header styles</th></tr> 
    </thead> 
    <tbody> 
    <tr><td>This receives item styles</td></tr> 
    <tr><td>This receives item styles</td></tr> 
    <tr><td>This receives item styles</td></tr> 
    </tbody> 
</table> 

Ensuite, utilisez ce sélecteur à la place:

table tbody tr 

Fonctionne sur les anciens navigateurs au cas où vous en auriez besoin.

+0

+1, en particulier pour la deuxième option , ce qui est mieux sémantiquement. –

+0

Je vais rester avec la deuxième option. J'ai utilisé 3 tables, une pour l'en-tête, le corps et l'autre pour le pied de page. Mais je vais changer pour un seul comme vous l'avez dit. Merci beaucoup ! –

0
$('#table-id tr').not(':first-child').addClass('class'); 

devrait le faire

+0

Merci, mais je dois le faire sans jquery. –

Questions connexes