Селекторы классов JQuery, такие как $ (. SomeClass), чувствительны к регистру? - PullRequest
18 голосов
/ 05 апреля 2010

Учитывая этот HTML:

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

Почему этот селектор JQuery соответствует ему в некоторых браузерах и на некоторых страницах, но не на других?

$('.OpenIdSelector')

ПРИМЕЧАНИЕ. Я столкнулся с этой проблемой и решил ее самостоятельно, но это раздражало, и я уже не нашел ее в StackOverflow, поэтому я публикую ее как пару вопросов и ответов, чтобы кто-то другой не стал терять час, как я.

1 Ответ

31 голосов
/ 05 апреля 2010

Оказывается, JQuery селектор класса использует новый метод javascript getElementsByClassName , если браузер поддерживает его. Этот метод нечувствителен к регистру на страницах в режиме quirks и чувствителен к регистру на страницах, не являющихся quirksmode (то есть совместимыми со стандартами). Конечно, обычно очевидно, что случаи разные, но когда текст застрял в середине длинного, сложного селектора, это было трудно увидеть. Очевидно, есть много чувствительных к регистру различий между стандартами и причудами, на которые стоит обратить внимание.

Мораль истории: сопоставьте регистр всего в вашем HTML (имена элементов, CSS-классы и т. Д.), Потому что вы никогда не знаете, когда изменение браузера, стандарта или библиотеки может лишить вас законной силы случай-нечувствительность.

...