JQuery选择id时只能选到第一个元素

句龙胤 发布于 2014/10/06 17:22
阅读 4K+
收藏 0

后来我想可能是与这些元素的ID本身有关。

三个元素,id都是select-rule,结果当我$("#select-rule")时,发现只有一个能遍历到。最终我只好用了一个data-group来代替。

是不是JQuery在查询id时,还有别的处理?难道是正则表达式?因为中间有一个-符号所以才不行吗。那就很奇怪,别的属性可以就id这个属性有问题,难道只有查询id时才正则吗。

加载中
0
纠结名字

网页里面的id就跟身份证一样,每个元素都不应该相同。原生dom里有getElementById获取的是单个节点,其它如getElementsByClass、getElementsByName等等都是获取的节点集合。jq里面解析以#开头的选择器时,直接使用了getElementById,这个返回的是单个节点,也就是页面里第一个id为参数所给出的那个id的节点。较早之前的版本jq,可以把id当属性来获取元素,即$('[id=select-rule]'),不过不知道最新的版本能不能这么干了。

当然,最好还是id取唯一值。

1
麦琪
麦琪
晕,id必须唯一。
0
修改性别
修改性别
晕,id必须唯一。
0
mark35
mark35
DOM树中id必须唯一。当然你要写多个相同id的元素也行,只不过通过id值只能取到(第)一个元素
0
御风林海
御风林海
改用name或者class
0
云香水识
云香水识
ID 唯一, 这个是网页规范的最基础原则之一,请先避免。
0
句龙胤
句龙胤
ID唯一这个原则,我当时已经忘记了。所以才没注意到问题是这样。
0
爱思考的People
爱思考的People
晕,id必须唯一。
0
Nick_路
Nick_路

id是唯一的, 如果你需要在选择器返回多个元素的情况下取得某一个, 可以用

$(".class").get(0);

迭代所有元素可以使用

$(".class").each(function(){
    // $(this).show();
});



返回顶部
顶部