Vous avez demandé "comment mauvais". Donc, pour étoffer dehors @ RobertKoritnik (tout à fait exact) répondre un peu ...
Ce code est incorrect. Incorrect ne vient pas en nuances de gris. Ce code enfreint la norme et est donc incorrect. Cela échouerait dans la vérification de validation, et cela devrait être le cas
Cela dit, aucun navigateur actuellement sur le marché ne s'en plaindrait ou n'aurait de problème avec cela. Les navigateurs auraient le droit de se plaindre à ce sujet, mais aucune de leurs versions actuelles ne le fait actuellement. Ce qui ne veut pas dire que les versions futures pourraient ne pas traiter ce code de manière inappropriée.
Votre comportement en essayant d'utiliser cet ID en tant que sélecteur, en css ou en javascript, est indiscutable et varie probablement d'un navigateur à l'autre. Je suppose qu'une étude pourrait être faite pour voir comment chaque navigateur réagit à cela. Je pense que dans le meilleur des cas, il le traiterait comme "class =" et en sélectionnerait la liste. Cela risquerait de confondre les bibliothèques JavaScript. Si j’étais l'auteur de jQuery, j'aurais peut-être optimisé le code de mon sélecteur afin que, si vous me présentez avec un sélecteur commençant par "#", j'attends un seul objet, et obtenir un cette liste pourrait me casser complètement.)
Il peut également sélectionner le premier, ou éventuellement le dernier, ou n'en sélectionner aucun, ou bloquer complètement le navigateur. Pas moyen de le savoir sans l'essayer.
"Quelle est la gravité" dépend alors entièrement de la rigueur avec laquelle un navigateur particulier applique la spécification HTML et de ce qu'il fait lorsqu'il est confronté à une violation de cette spécification.
EDIT: Je viens de tomber sur cela aujourd'hui. J'insère divers composants à partir de formulaires de recherche sur différents types d'entités afin de produire un très grand utilitaire de reporting tout-en-un pour ce site. Je charge les formulaires de recherche des pages distantes dans des div cachés et les insère dans mon générateur de rapport lorsque le type d’entité approprié est sélectionné comme source pour le rapport. Il existe donc une version cachée du formulaire et une version affichée dans le générateur de rapports. Le code JavaScript fourni avec, dans tous les cas, fait référence aux éléments par ID, dont il y a maintenant DEUX sur la page - celui qui est caché et celui qui est affiché.
Ce que jQuery semble faire, c'est de me choisir le PREMIER, qui est dans tous les cas exactement celui que je ne veux pas.
Je travaille autour de cela en écrivant des sélecteurs pour spécifier la région de la page dans laquelle je veux obtenir mon champ (par exemple: $ ('# containerDiv #specificElement')). Mais il y a une réponse à votre question: jQuery sur Chrome se comporte vraiment de manière particulière lorsqu'il est confronté à cette violation des spécifications.