<!DOCTYPE HTML>
<script src='http://code.jquery.com/jquery-latest.min.js'></script>
<body>
<div id='mydiv'>Hello, buddy.</div>
<div id='mydiv'>Hello, friend.</div>
</body>
在JQuery中,如果我$('#mydiv')
它将仅选择第一个div,但如果我$('div#mydiv')
它将选择所有这些。
我理解指定元素和id,它将阻止选择具有相同id但不是div的其他元素。
这不是一个错误吗?不应该$('#mydiv')
选择所有ID为“mydiv&#39;”
答案 0 :(得分:4)
它根本不是一个错误... ID(#myId)不应该在多个实例中使用。这就是为什么我们有课程(.myClasses)。
因此,您可以根据需要使用类。但是每个HTML页面的ID始终是唯一的。您可能会在许多不同的页面中显示一个ID,但始终作为唯一ID。
答案 1 :(得分:4)
此外,在您的情况下,jQuery应该只选择一个元素,并选择ID
的第一个元素。由于您还提供了div
,因此它使用getElementsByTagName
,并将该属性与ID匹配。因此,它返回所有实例。如果我错了,请纠正我。
根据网络标准,id
属性必须是唯一的。因此,每个元素都应该有唯一的ID。如果你想为多个元素使用东西,你就有了类。
此外,如果您有多个ID,您的HTML将无法验证。
此外,来自XHTML 1.0 Spec
在XML中,片段标识符是 类型ID,只能有一个 每个类型ID的单个属性 元件。因此,在XHTML 1.0中 id属性定义为类型 ID。为了确保XHTML 1.0 文档是结构良好的XML 文档,XHTML 1.0文档必须 定义时使用id属性 元素上的片段标识符 以上所列。请参阅HTML 兼容性指南 有关确保此类锚点的信息 在服务时向后兼容 XHTML文档作为媒体类型 text / html的。
答案 2 :(得分:2)
#mydiv
可能已针对使用getElementById
进行了优化,{{1}}中将其描述为:
如果多个元素具有此ID,则未定义行为。
通常会返回具有此ID的第一个元素。