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

mar*_*ark 68 jquery css-selectors

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

我尝试过这个并没有用

jQuery('#xx').each(function(ind,obj){
      //do stuff;
});
Run Code Online (Sandbox Code Playgroud)

myd*_*rms 383

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

当你使用

jQuery("#elemid") 
Run Code Online (Sandbox Code Playgroud)

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

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

jQuery("[id=elemid]") 
Run Code Online (Sandbox Code Playgroud)

这当然适用于任何属性的选择,您可以通过指定相关标签进一步优化您的选择(例如,在您的情况下为div)

jQuery("div[id=elemid]") 
Run Code Online (Sandbox Code Playgroud)

  • 你是唯一一个回答问题的人. (125认同)
  • 至少有人知道如何在jQuery中做真正的东西......天哪!我很想知道这一点,没有别的办法.我根本无法接受所有其他人使用课程的方法,我已经在那里做了不同的工作.冰雹@mydoghasworms !! (7认同)
  • +1为什么这不被接受为正确的答案? (7认同)
  • 美丽而简单.谢谢. (4认同)
  • 我正要说:这里有很多建议,但没有答案.幸运的是,你回答得很好,我认为即使@ Ballsacian1建议的方法能够避免这个问题,这也应该被接受. (3认同)
  • 这是正确的答案,应该接受,+ 1 (2认同)

Bal*_*an1 39

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

<div id="c-1" class="countdown"></div>
<div id="c-2" class="countdown"></div>
Run Code Online (Sandbox Code Playgroud)

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


那么如何为每个倒数计时器添加多个类呢?IE:

<div class="countdown c-1"></div>
<div class="countdown c-2"></div>
<div class="countdown c-1"></div>
Run Code Online (Sandbox Code Playgroud)

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

  • 重要的是要有一个假设先决条件而不是解决方法的完整答案。即使您认为先决条件不是最优的,它们通常也是给定的(例如为现有网站编写一个以这种方式使用 id 标签的 Greasemonkey 脚本)。 (2认同)

Aym*_*ieh 35

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

HTML标准:

id = name [CS]此属性为元素指定名称.该名称在文档中必须是唯一的.

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

  • @Jimbo - 是的,但我的回答是关于具有相同`id` 的元素,而不是`name`。 (2认同)
  • @Jimbo - 好吧,是的,广播组依赖于这个功能.但并非所有元素都有名称.问题提及div,并且它们没有name属性. (2认同)