在一页中为多个元素提供相同的ID是否安全?例如,当使用某些jquery插件,两次或多次运行某些滑块或图库时,通常会发生这种情况。我们知道,开发人员喜欢给html容器一些ID,以使脚本工作更快。
让我们阅读w3.org文档:
使ID类型的属性特别的原因是,没有两个这样的属性可以具有相同的值。无论使用哪种文档语言,ID属性都可以用来唯一标识其元素。
但是下一个示例具有2个具有相同ID的元素的示例在所有浏览器中都可以正常使用,尽管它无效:
#red {
color: red;
}
<p id="red">I am a red text.</p>
<p id="red">I am a red text too.</p>
有人可以解释这种奇怪的情况吗?
浏览器总是尝试“静默失败”。这意味着即使您的HTML无效,浏览器也会尝试猜测您的意图,并相应地进行处理。
但是,背离规范会导致一些非常无法预料的副作用。
例如:
document.getElementById('red');
只会让你第一个。
您还必须在用户可能使用的所有浏览器中测试页面,以确保您的代码按预期工作。您不能仅仅 假设 它会起作用。
简而言之: 不要这样做!如果您需要使用同一CSS定位多个元素,请使用类名。那就是他们设计的目的…
话说回来; 如果您 确实 需要选择具有相同ID的多个元素,请使用属性选择器:
document.querySelectorAll('p[id="red"]');
但是请注意,这在IE7及以下版本中不起作用…
我在Wordpress和Visual Composer一起工作,我有一个切换容器。基本上,我点击每个选项卡,下面的内容就会发生变化。我想通过CSS为每个选项卡分配一个不同的图像作为背景。但是,我已经实现了这一点,因为每个选项卡都有相同的类名(由visual composer赋予它),所以图像是相同的。我需要弄清楚如何给每个选项卡一个唯一的id,这样我就可以给每个选项卡一个自己的背景图像--但是由于
问题内容: 是否可以在CSS中选择多个具有某个特定类,id等父的元素?例如: 如果不是,是否有办法选择该元素的所有子元素? 问题答案: 是否可以在CSS中选择多个具有某个特定类,id等父的元素? 当前,不幸的是,并非没有复制整个父选择器并指定所有后代,而是1: 直到选择器3最终确定后,他们才提出了伪类表示法来进行此操作,直到最近,基本实现才开始出现。 简而言之,现在已成为标准的伪类称为。在遥远的将
问题内容: 我正在用Capele在Capybara中编写自动化代码。我的HTML中包含以下元素,我想在capybara中单击该元素。 目前,工作方式如下。 但是我想从像这样的两个类的名称中选择元素 我知道我们可以触发JavaScript代码,但这并不明智。 问题答案: 您可以通过以下方式搜索元素 根据您的示例,似乎以下应该工作 您也可以使用
问题内容: 我从Google的AdWords网站获取数据,该网站包含多个具有相同元素的元素。 您能否解释为什么以下3个查询没有得到相同答案(2)? 现场演示 HTML: JS: 问题答案: 根据W3C规范,具有2个具有相同ID的元素不是有效的html。 当您的CSS选择器只有一个ID选择器(并且未在特定上下文中使用)时,jQuery使用本机方法,该方法仅返回具有该ID的第一个元素。 但是,在其他两
问题内容: 我有一些用PHP生成的元素,我想知道是否可以选择ID不完整的元素,例如: 该类已经习惯了它们的共同点,但是现在我需要单独选择它们,但我不知道整个ID名称。 我可以使用类似: 问题答案: 不使用ID选择器,因为它们需要完整的ID名称,但使用substring属性选择器: 但是,既然您的元素仍然具有属性,那么为什么不向每个元素组添加一个通用类并按该类进行选择呢?您应该能够像生成ID一样使用
问题内容: 这样的情况有效吗? 问题答案: 没有。 元素ID在整个文档中应该是唯一的。