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

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

我试过了,但是没有用

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

您的文档不应该包含具有相同 id 的两个 div。这是 无效的 HTML,因此底层 DOMAPI 不支持它。

来自 HTML 标准:

Id = name [ CS ]此属性赋值 元素的名称。此名称必须 在文件中是唯一的。

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

你能为每个不同的计时器分配一个唯一的 CSS 类吗?这样,您可以使用 CSS 类的选择器,它可以很好地处理多个 div元素。

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

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

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


好吧,那么在每个倒计时器上添加多个类呢:

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

这样你就可以同时得到两个世界的最好结果,它甚至允许重复“ IDS”

您还可以尝试用惟一 id 将两个 div 包装在两个 div 中。然后通过 $("#div1","#wraper1")$("#div1","#wraper2")选择 div

给你:

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

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

当你使用

jQuery("#elemid")

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

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

jQuery("[id=elemid]")

这当然适用于任何属性的选择,您可以通过指定相关的标记(例如,在您的例子中是 Div)来进一步细化您的选择

jQuery("div[id=elemid]")

尝试这样通过第一个 id 选择 div

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

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