W3Schools JQuery Quiz - PullRequest
       12

W3Schools JQuery Quiz

7 голосов
/ 19 апреля 2011

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

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

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

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

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

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

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

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

Я понял это правильно, выбрав ответ Б.

Мой вопрос связан с формулировкой ответа Б.

Не следует ли исключить из ответа слово "первый"?

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

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

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

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


EDIT:

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


РЕДАКТИРОВАНИЕ № 2:

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

Еще один сомнительный ответ JQuery Quiz в W3Schools

Ответы [ 2 ]

15 голосов
/ 19 апреля 2011

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

Согласно спецификации HTML 4.01 :

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

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

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

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

Поведение не определено, если больше один элемент имеет этот идентификатор.

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

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

1 голос
/ 31 октября 2013

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...