具有相同类的元素 id 数组

Posted

技术标签:

【中文标题】具有相同类的元素 id 数组【英文标题】:array of element id with same class 【发布时间】:2014-06-13 19:47:51 【问题描述】:

我是 javascript 新手,需要您的帮助。 我想要一个元素 ID 数组以供下次使用。

例子:

<div id="myDiv">
  <input type="checkbox" id="checkbox1" class="checkboxes" value="checkbox1_v">
  <input type="checkbox" id="checkbox2" class="checkboxes" value="checkbox2_v">
  <input type="checkbox" id="checkbox3" class="checkboxes" value="checkbox3_v">
  <input type="checkbox" id="checkbox4" class="checkboxes" value="checkbox4_v">
</div>

我需要的是一个像这样的数组(“checkbox1,checkbox2,checkbox3,checkbox4”)设置为 var,以便在下一个 js 函数中使用,如果选中了相应的复选框,则显示/隐藏 div(使用 forEach 来检查每个复选框和如果选择,则将 .show 设置为 div)。

显示/隐藏我拥有的 js 的一部分,并且在测试中它适用于一个特定的复选框。但是有数组的原因是复选框的数量是动态的,公共属性只有“myDiv”用于外部 div 和输入类。

提前致谢。

【问题讨论】:

【参考方案1】:

你可以使用.map()来生成这样的数组

var ids = $('#myDiv .checkboxes').map(function()
    return this.id;
).get();

在这种情况下,它会生成一个数组,其中包含带有类复选框的所有元素的 ids

【讨论】:

+1 - 我个人会做[].map.call(document.querySelectorAll(".checkboxes"),function(c) return c.id;),但无论如何都能完成工作:p 无论如何,如果可以的话,我会给你一个+2,因为你实际上写了this.id,而不是令人心碎的$(this).attr("id")或天堂禁止$("#"+this.id).attr("id")... 那么请将此答案标记为已选,将问题标记为已回答【参考方案2】:

您可以使用.map()

通过函数传递当前匹配集中的每个元素, 生成一个包含返回值的新 jQuery 对象。

var idArr = $('#myDiv input[type="checkbox"]').map(function() 
    return this.id
).get();

Fiddle Demo

【讨论】:

以上是关于具有相同类的元素 id 数组的主要内容,如果未能解决你的问题,请参考以下文章

访问结构数组中结构的元素

[java初探05]__数组的简单认识及Arrays类的常用方法

vector

查找重复项并将其替换为具有相同索引位置的新数组

jQuery 选择具有 A 或 B 或 C 类的元素

从具有相同类的元素集中选择随机ID [重复]