如何在jQuery中选择具有特定ID的所有元素?

时间:2009-05-24 01:16:53

标签: jquery css-selectors

我正在尝试在jQuery中选择具有相同ID的所有<div>。我该怎么做?

我尝试了这个并且没有用

jQuery('#xx').each(function(ind,obj){
      //do stuff;
});

7 个答案:

答案 0 :(得分:380)

虽然这里有其他正确答案(例如使用类),但从学术角度来看,当然可以有多个具有相同ID的div,并且可以使用jQuery选择它们。

使用时

jQuery("#elemid") 

它只选择具有给定ID的第一个元素。

但是,当您按属性选择时(例如 id ),它会返回所有匹配的元素,如下所示:

jQuery("[id=elemid]") 

这当然适用于任何属性的选择,您可以通过指定相关代码来进一步优化您的选择(例如 div

jQuery("div[id=elemid]") 

答案 1 :(得分:39)

我会使用不同的ID,但为每个DIV分配相同的类。

<div id="c-1" class="countdown"></div>
<div id="c-2" class="countdown"></div>

这还有一个额外的好处,就是能够根据jQuery的返回值重新构建ID('。countdown')。length


好的是为每个倒数计时器添加多个类。 IE:

<div class="countdown c-1"></div>
<div class="countdown c-2"></div>
<div class="countdown c-1"></div>

这样你就可以获得两全其美的效果。它甚至允许重复'IDS'

答案 2 :(得分:36)

您的文档不应包含两个具有相同ID的div。这是invalid HTML,因此,底层DOM API不支持它。

来自HTML standard

  

id = name [CS]此属性分配   元素的名称。这个名字必须   在文档中是独一无二的。

您可以为每个div指定不同的ID,并使用$('#id1, #id2)选择它们。或者将同一个类分配给两个元素(例如.cls),并使用$('.cls')选择它们。

答案 3 :(得分:4)

$("div[id^=" + controlid + "]")将返回具有相同名称的所有控件,但您需要确保文本不应出现在任何控件中

答案 4 :(得分:2)

您可以为每个不同的计时器分配一个唯一的CSS类吗?这样你就可以使用CSS类的选择器,它可以与多个div元素一起使用。

答案 5 :(得分:2)

尝试使用第一个id

选择div
$('div[id^="c-"]')

答案 6 :(得分:1)

您也可以尝试将两个div包装在两个具有唯一ID的div中。然后按$("#div1","#wraper1")$("#div1","#wraper2")

选择div

你走了:

<div id="wraper1">
<div id="div1">
</div>
<div id="wraper2">
<div id="div1">
</div>