W3Schools тест на jQuery

на сайте W3Schools размещена викторина jQuery...

http://www.w3schools.com/quiztest/quiztest.asp?qtest=jQuery

Вопрос № 19 выглядит следующим образом,

посмотрите на следующий селектор jQuery: $("div#intro .глава.)"

что он выбирает?

A. первый элемент с id= "head" внутри любого элемента div с class= "intro"

B. Все элементы с классом= " head" внутри первого элемента div с id= "intro"

C. Все элементы div с id= "intro"или class="head"

Я получил его правильно, выбрав ответ B.

мой вопрос имеет отношение к формулировке ответа B.

разве слово "первый" не должно быть удалено из ответа?

B. Все элементы с class= "head" внутри элемента div с id= "intro"

ID определяется как " A уникальный идентификатор элемента", поэтому не совсем понимаю, почему они будут ссылаться на " the первый div элемент с id=intro"

Я не верю, что он намеренно пытается быть сложным, поскольку все остальные вопросы в этой викторине очень просты.

Спасибо за ваши мысли.


EDIT:

Я сообщил об этой ошибке в W3Schools и направил их на это нитка.


EDIT #2:

Это еще один вопрос из той же викторины.

еще один сомнительный ответ на викторину jQuery в W3Schools

2 ответов


Вы правы,первый язык мог (должны) будут удалены из всех вариантов.

по словам HTML 4.01 Spec:

этот атрибут присваивает имя элемент. Это имя должно быть уникальным в документ.

дополнительно, согласно jQuery документация для селектора идентификаторов:

выбирает один элемент с данный id атрибут

под капотом селектор использует document.getElementById("..."). Интересно,спецификация для этой функции государства:

поведение не определяется, если более один элемент имеет этот ID.

Итак, предположим у вас есть два элемента с одинаковым id, результаты функции непредсказуемы и зависят от браузера.

Sidenote: W3Schools не рассматривается как один из лучших мест для изучения JavaScript / jQuery. Уважаемая альтернатива JavaScript -руководство MDC по JavaScript. Для jQuery, проверьте уроки


действительно поведение документа.метода getElementById("...") не определено, если этот идентификатор имеет более одного элемента.

однако, как последовательно пытается указать сайт w3schools, поведение jQuery в этой ситуации четко определено. Если этот идентификатор имеет более одного элемента, то первый будет выбран один.

никто не потворствует более чем одному элементу, имеющему определенный идентификатор; это все еще противоречит правилам. Однако, в отличие от getElementById, jQuery имеет определенную реакцию, если это правило нарушено.