Maison > Article > interface Web > JQuery prend-il vraiment en charge tous les sélecteurs CSS ?
Prise en charge des sélecteurs jQuery : dévoiler les mystères
Bien que jQuery offre une prise en charge étendue des sélecteurs CSS, certains sélecteurs comme :nth-last-child() restent insaisissables. Cependant, ce n'est pas aussi simple qu'il y paraît.
Implémentation partielle des sélecteurs CSS3 par jQuery
Malgré la conformité revendiquée avec les sélecteurs de niveau 3, l'implémentation des sélecteurs de jQuery est insuffisante dans certains domaines. , comme précisé dans sa documentation. Il s'appuie sur sa bibliothèque de sélecteurs sous-jacente, Sizzle, qui prend en charge la plupart des sélecteurs de niveau 3, mais pas tous.
Sélecteurs pris en charge et non pris en charge
À partir de jQuery 1.9, Sizzle prend en charge presque tous les sélecteurs de niveau 3 sauf :
De plus, jQuery a ajouté ses propres sélecteurs.
:nth-last-child() en action
Le :nth-last-child( ) le sélecteur semble fonctionner dans certains navigateurs car jQuery exploite document.querySelectorAll(). Les navigateurs prenant en charge à la fois :nth-last-child() et document.querySelectorAll(), comme Firefox, Chrome et IE9, renvoient une liste de nœuds que jQuery peut utiliser.
Mécanisme de repli et compatibilité IE8
Si document.querySelectorAll() échoue, jQuery revient à Sizzle. Cependant, Sizzle ne prend pas en charge :nth-last-child(). Étant donné qu'IE8 n'implémente pas document.querySelectorAll(), le mécanisme de secours échoue, entraînant un échec sur IE8.
Solutions alternatives
La mise à niveau vers jQuery 1.9 ou version ultérieure résout le problème :nth-last-child(). Alternativement, jQuery fournit des extensions de sélecteur personnalisées pour implémenter des pseudo-classes non prises en charge.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!