具有相同类的元素 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 数组的主要内容,如果未能解决你的问题,请参考以下文章