Tout,
J'ai un ASP.NET GridView qui est rendu à un tableau HTML.
<table>
<tr><th>Col 1 Head</th><th>Col 2 Head</th></tr>
<tr><td>Data 1</td><td>Data 2</td></tr>
<tr><td>Data 3</td><td>Data 4</td></tr>
</table>
Je souhaite mettre en surbrillance la ligne lorsque la souris est survolée - à l'exception de la première ligne qui est l'en-tête.
Je commence tout juste à me mouiller la tête avec JQuery et à essayer un peu de CSS (CSS2 ou CSS3). Y a-t-il un moyen préféré de faire cela?
Quelqu'un peut-il me donner un point de départ pour cela?
À votre santé
Andez
Vous pouvez le faire en utilisant le spécificateur CSS :hover
. Voici une démonstration:
<table>
<tr><th>Col 1 Head</th><th>Col 2 Head</th></tr>
<tr class = "notfirst"><td>Data 1</td><td>Data 2</td></tr>
<tr class = "notfirst"><td>Data 3</td><td>Data 4</td></tr>
</table>
CSS:
.notfirst:hover {
background-color: red;
}
Il existe un moyen d'obtenir le comportement souhaité sans classer chaque ligne séparément. Voici comment mettre en évidence chaque ligne du tableau à l'exception de la première (en-tête) en survol à l'aide des sélecteurs CSS :not
et :first-child
:
tr:not(:first-child):hover {
background-color: red;
}
Malheureusement, IE <9 ne prend pas en charge :not
. Pour ce faire, vous pouvez utiliser quelque chose comme ceci:
tr:hover {
background-color: red;
}
tr:first-child:hover {
background-color: white;
}
Fondamentalement, la première règle CSS inclut toutes les lignes . Pour éviter de mettre en surbrillance la première ligne, vous remplacez son style de survol en sélectionnant tr:first-child
, puis en conservant son background-color
en blanc (ou la couleur de la ligne non surlignée).
J'espère que ça a aidé aussi!
Pour développer la réponse de user2458978, le meilleur moyen de le faire est certainement de coder correctement les tables.
<table>
<thead>
<tr><th></th></tr>
</thead>
<tbody>
<tr><td></td></tr>
<tr><td></td></tr>
</tbody>
</table>
Ensuite, le CSS est simplement
table tbody tr:hover { background-color: red; }
1.
Placer l'en-tête tr à l'intérieur de la balise thead
2.
Placez les autres balises dans la balise tbody
3.
Utilisez les css suivants
table tr:not(thead):hover {
background-color: #B0E2FF;
}
Utilisez jQuery pour ajouter une classe à l’élément parent du td (sans sélectionner th)
$('td').hover(function(){
$(this).parent().addClass('highlight');
}, function() {
$(this).parent().removeClass('highlight');
});
Ajoutez ensuite la classe CSS
.highlight {
background:red;
}
Pourquoi ne pas simplement utiliser
tr>td:hover {
/* hover effect */
background-color: lightblue;
}
Cela n'affectera que les lignes de la table avec td à l'intérieur, pas les lignes de la table avec td. Fonctionne dans tous les navigateurs. Acclamations gars.
Pourquoi pas quelque chose comme:
tr:first-child ~ tr { background-color:#fff; }
Utilisez la balise TH pour la première ligne et procédez comme suit:
th {
background-color:#fff;
}
Pour toutes les autres lignes:
tr:not(:first-child):hover {
background-color:#eee;
}
ou
tr:hover td {
background-color:#eee;
}
En tant que de besoin, je dois mettre en évidence toutes les lignes paires sauf la ligne d'en-tête.
Par conséquent, cette réponse pourrait ne pas convenir à la question ci-dessus.
Même alors, je donne ma réponse ici avec l'espoir que quelqu'un d'autre puisse utiliser ma réponse s'il rencontre cette page dans la recherche sur les moteurs de recherche.
Ma réponse est:
$("#tableName tr:even").not("tr:nth(0)").addClass("highlight");