2010-04-05 3 views
17

Donné le HTML:

<div class="OpenIDSelector">some text</div> 

Pourquoi ne correspond ce sélecteur JQuery sur certains navigateurs et certaines pages, mais pas sur d'autres?

$('.OpenIdSelector') 

NOTE: je suis tombé sur ce problème et résolu moi-même, mais il était ennuyeux et je ne trouve pas sur StackOverflow déjà, donc je l'afficher comme Q & Une paire que quelqu'un d'autre Je ne vais pas perdre une heure comme je l'ai fait.

+0

oui, ils sont sensibles à la casse, mais parfois le navigateur ne / – spielersun

Répondre

29

Il s'avère que le class selector de JQuery utilise la nouvelle méthode javascript getElementsByClassName si le navigateur le supporte. Cette méthode est insensible à la casse sur les pages en mode quirks, et sensible à la casse sur les pages non-quirksmode (ou normes-conformes). Bien sûr, il est généralement évident que les cas sont différents, mais quand le texte est coincé au milieu d'un long sélecteur complexe, il était difficile à voir. Apparemment, il y a beaucoup de différences sensibles à la casse entre les normes et les bizarreries à surveiller.

Morale de l'histoire: la casse de tout dans votre code HTML (noms d'éléments, classes CSS, etc.) parce que vous ne savez jamais quand un changement à un navigateur ou d'une norme ou d'une bibliothèque peut invalider votre hypothèse sur insensibilité à la casse .

Questions connexes