Aujourd'hui, j'ai appris qu'une combinaison de sélecteurs jQuery et de la fonction addClass() ne fonctionnait pas correctement sur IE8.Sélecteurs IE8 et jQuery
Par exemple, quand je veux faire en sorte que les lignes paires sont sélectionnées dans une table, j'ai écrit:
jQuery(document).ready(function($){
$("#table1 tr:nth-child(even)").addClass("even");
}
Et pour le CSS, j'ai écrit:
#table1 tr:nth-child(even), #table1 tr.even {
background-color: #ff0;
}
Dans Firefox , Chrome, Safari et Opera, même sans le sélecteur de pseudo-classe dans le fichier CSS, les lignes paires sont sélectionnées. Cependant, dans IE8, ce n'est pas le cas. Les lignes n'ont pas une couleur d'arrière-plan différente.
C'est bizarre parce que quand je:
jQuery(document).ready(function($){
$("#table1 tr:nth-child(even)").css({"background-color":"#ff0"});
}
Les lignes sélectionnées sont mises en évidence dans IE8.
Un exemple du problème est question peut être vu ici - 24ways example. Dans Firefox, Chrome, Safari et Opera, les lignes impaires sont assignées à une classe "impaire". Cependant, dans IE8, ils ne sont pas assignés à une classe "impaire" et ne sont pas mis en surbrillance.
Nick, merci beaucoup pour la solution. Cela a fonctionné comme par magie. Il est vraiment étonnant que IE8 se comporte de cette façon, car pour d'autres pseudo-sélecteurs, cela n'arrive pas. Par exemple, lorsque j'ai utilisé des pseudo-sélecteurs first-child et last-child dans jQuery, cela fonctionne toujours comme prévu. Merci encore! – Terry
@teddyrised - Bienvenue :) Je ne suis pas sûr pourquoi IE se comporte comme ça, je vais juste l'ajouter à la liste des 50 000 choses qu'il fait mal. En passant, assurez-vous d'accepter les réponses pour fermer la question/aider le prochain gars à trouver ce problème sur google - via la coche sur la gauche :) –
Ah, merci beaucoup pour l'aide. Je suis encore nouveau pour débordement de pile bien que je sois caché autour pour toujours. Merci! – Terry