W3Schools网站上发布了一个jQuery测验......
http://www.w3schools.com/quiztest/quiztest.asp?qtest=jQuery
问题#19如下,
查看以下jQuery选择器:$(“div #intro .head”)。
它选择了什么?
一个。 id =“head”的第一个元素在任何div元素中,class =“intro”
B中。所有元素的class =“head”在第一个div元素中,id =“intro”
℃。所有div元素的id =“intro”或class =“head”
我通过选择答案B得到了正确的答案。
我的问题与答案B的措辞有关。
不应该从答案中删除“第一”这个词吗?
B中。在div元素中具有class =“head”的所有元素,id =“intro”
ID被定义为“元素的唯一标识符”,因此不能真正理解为什么他们会引用带有id的“第一个 div元素=前奏“
我不相信它故意试图变得棘手,因为这个测验中的所有其他问题都非常简单。
谢谢你的想法。
修改
我向W3Schools报告了这个错误,并将他们引导到了这个主题。
编辑#2:
这是来自同一测验的另一个问题。
答案 0 :(得分:15)
你是对的,第一个语言可以(应该)从所有选择中删除。
此属性为其指定名称 元件。此名称在a中必须是唯一的 文档。
此外,根据jQuery documentation for the id selector:
选择带有的单个元素 给定id属性
在引擎盖下,选择器使用document.getElementById("...")
。有趣的是,此函数的the specification表示:
如果超过,则不定义行为 一个元素有此ID。
因此,假设您有两个具有相同id
的元素,则该函数的结果是不可预测的并且特定于浏览器。
Sidenote :W3Schools不被视为学习JavaScript / jQuery的最佳场所之一。一个备受推崇的JavaScript替代品是MDC's JavaScript Guide。对于jQuery,请查看tutorials页面。
答案 1 :(得分:1)
如果多个元素具有此ID,则document.getElementById(“...”)的行为确实是未定义的。
然而,正如w3schools网站一直试图指出的那样,jQuery在这种情况下的行为是明确定义的。如果多个元素具有此ID,则将选择 first 。
没有人会宽恕多个具有特定身份证明的元素;这仍然是违反规则的。但是,与getElementById不同,如果此规则被破坏,jQuery会有特定的反应。