Maison  >  Article  >  interface Web  >  JQuery prend-il vraiment en charge tous les sélecteurs CSS ?

JQuery prend-il vraiment en charge tous les sélecteurs CSS ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 06:03:30209parcourir

Does jQuery Truly Support All CSS Selectors?

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 :

  • Pseudo-éléments
  • Pseudo-classes dynamiques comme :link/:visited et :hover
  • Préfixes d'espace de noms

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn