Zapytałeś „jak źle”. Tak więc, aby udzielić trochę odpowiedzi (całkowicie trafnej) @ RobertKoritnik ...
Ten kod jest niepoprawny. Niepoprawne nie występuje w odcieniach szarości. Ten kod narusza standard i dlatego jest nieprawidłowy. Nie sprawdziłby sprawdzania poprawności i powinien.
To powiedziawszy, żadna przeglądarka obecnie na rynku nie narzekałaby na to ani nie miała z tym żadnego problemu. Przeglądarki będą miały prawo narzekać na to, ale żadna z obecnych wersji żadnej z nich obecnie tego nie robi. Co nie oznacza, że przyszłe wersje mogą nie traktować tego kodu źle.
Twoje zachowanie przy próbie użycia tego identyfikatora jako selektora, zarówno w css, jak i javascript, jest niewyobrażalne i prawdopodobnie różni się w zależności od przeglądarki. Przypuszczam, że można by przeprowadzić badanie, aby zobaczyć, jak reaguje na to każda przeglądarka. Myślę, że w najlepszym przypadku potraktowałoby to tak jak „class =” i wybrało ich listę. (Może to jednak mylić biblioteki JavaScript - gdybym był autorem jQuery, mógłbym zoptymalizować kod selektora, aby jeśli przyszedłeś do mnie z selektorem rozpoczynającym się od „#”, spodziewam się pojedynczego obiektu i otrzymania lista może mnie całkowicie zepsuć.)
Może także wybrać pierwszy, ewentualnie ostatni, albo nie wybrać żadnego z nich, albo całkowicie zawiesić przeglądarkę. Nie można tego powiedzieć bez wypróbowania.
„Jak źle” zależy wtedy całkowicie od tego, jak ściśle konkretna przeglądarka implementuje specyfikację HTML i co robi, gdy zostanie skonfrontowana z naruszeniem tej specyfikacji.
EDYCJA: Właśnie tego dzisiaj spotkałem. Pobieram różne komponenty z formularzy wyszukiwania różnych typów podmiotów, aby stworzyć świetne, kompleksowe narzędzie do raportowania dla tej witryny, ładuję formularze wyszukiwania zdalnych stron w ukrytych divach i umieszczam je w mojej generator raportów, gdy jako źródło raportu zostanie wybrany odpowiedni typ encji. Jest więc ukryta wersja formularza i wersja wyświetlana w generatorze raportów. JavaScript, który został dostarczony, we wszystkich przypadkach, odnosi się do elementów według identyfikatora, których na stronie znajdują się teraz DWIE - ukryty i wyświetlany.
Wydaje się, że jQuery wybiera PIERWSZĄ, która we wszystkich przypadkach jest dokładnie tą, której NIE chcę.
Pracuję nad tym, pisząc selektory, aby określić region strony, w której chcę uzyskać moje pole (tj .: $ ('# containerDiv #specificElement')). Ale jest jedna odpowiedź na twoje pytanie - jQuery w Chrome zdecydowanie zachowuje się w określony sposób w przypadku naruszenia tego specyfikacji.