当前位置: 首页 > 面试题库 >

当多个具有相同ID值的元素时,jQuery如何工作?

韩博简
2023-03-14
问题内容

我从Google的AdWords网站获取数据,该网站包含多个具有相同元素的元素id

您能否解释为什么以下3个查询没有得到相同答案(2)?

现场演示

HTML:

<div>
    <span id="a">1</span>
    <span id="a">2</span>
    <span>3</span>
</div>

JS:

$(function() {
    var w = $("div");
    console.log($("#a").length);            // 1 - Why?
    console.log($("body #a").length);       // 2
    console.log($("#a", w).length);         // 2
});

问题答案:

根据W3C规范,具有2个具有相同ID的元素不是有效的html。

当您的CSS选择器只有一个ID选择器(并且未在特定上下文中使用)时,jQuery使用本机document.getElementById方法,该方法仅html" target="_blank">返回具有该ID的第一个元素。

但是,在其他两个实例中,jQuery依赖于Sizzle选择器引擎(或querySelectorAll,如果有的话),显然选择了两个元素。结果可能因浏览器而异。

但是,在同一页面上绝对不能有两个具有相同ID的元素。如果您的CSS需要它,请改用一个类。

如果绝对必须通过重复的ID选择,请使用属性选择器:

$('[id="a"]');

看看小提琴:http :
//jsfiddle.net/P2j3f/2/

注意: 如果可能,您应该使用标签选择器来限定该选择器,如下所示:

$('span[id="a"]');


 类似资料:
  • 问题内容: 在一页中为多个元素提供相同的ID是否安全?例如,当使用某些jquery插件,两次或多次运行某些滑块或图库时,通常会发生这种情况。我们知道,开发人员喜欢给html容器一些ID,以使脚本工作更快。 让我们阅读w3.org文档: 使ID类型的属性特别的原因是,没有两个这样的属性可以具有相同的值。无论使用哪种文档语言,ID属性都可以用来唯一标识其元素。 但是下一个示例具有2个具有相同ID的元素

  • 问题内容: 我是jQuery新手。我有以下代码: 它仅适用于带有的第一个,不适用于其他。如何将其应用于具有相同ID的所有元素? HTML: 问题答案: 元素的ID在中应该是唯一的。两个或多个元素具有相同的ID无效html。要在各个元素之间共享功能,请给它们分配一个公共类,而不要给它们相同的ID。如果您不能为它们分配一个通用类,则下面的解决方法将使您可以选择具有相同id属性的元素: 使用相同的ID

  • 问题内容: 这样的情况有效吗? 问题答案: 没有。 元素ID在整个文档中应该是唯一的。

  • 在我的身体里我有3

  • 问题内容: 我的类中有很多div,并且我想使用jquery遍历它们以检查每个div是否满足特定条件。如果为真,则应执行一个操作。 有人知道我会怎么做吗? 问题答案: 使用每个:’ ‘是数组中的位置,是您要迭代的DOM对象(也可以通过jQuery包装器进行访问)。 检查api参考以获取更多信息。

  • 假设您有以下扩展处理器接口的类: 现在,假设您在Package1的配置类中定义了以下bean: 接下来,您在Package2的配置类中定义以下bean: 问题是Spring如何解决以下喷射: 如果其中一个bean被注释为@Primary呢?