2010-04-05 9 views
17

Biorąc pod uwagę to HTML:

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

Dlaczego ten selektor JQuery dopasować go na niektórych przeglądarkach i niektórych stron, ale nie na innych?

$('.OpenIdSelector') 

UWAGA: Wpadłem na ten problem i rozwiązać go samodzielnie, ale to było denerwujące i nie mogę znaleźć go na StackOverflow już, więc jestem delegowania go jako Q & Para więc ktoś inny nie zmarnuję godziny tak jak ja.

+0

tak, są rozróżniane małe i wielkie litery, ale czasami przeglądarka nie ma / – spielersun

Odpowiedz

29

Okazuje się, że JQuery's class selector używa nowej metody javascript getElementsByClassName, jeśli obsługuje ją przeglądarka. Ta metoda nie rozróżnia wielkości liter na stronach typu quirks oraz rozróżniana jest wielkość liter na stronach nienależących do quirksmode (zwanych też standardowymi). Oczywiście, zazwyczaj jest oczywiste, że przypadki są różne, ale kiedy tekst utknął w środku długiego, złożonego selektora, trudno było go dostrzec. Wygląda na to, że istnieje wiele rozróżnianych wielkości znaków między standardami i dziwactwami, na które należy zwrócić uwagę.

Morał z tej historii: mecz przypadek wszystko w kodzie HTML (nazwy elementów, klasy CSS, itd.), Ponieważ nigdy nie wiesz, kiedy zmiana w przeglądarce lub standardowej lub biblioteki może unieważnić swoje założenie o sprawy niewrażliwości .

Powiązane problemy