将已检查项目的类名称作为数组进行查询?

时间:2017-05-04 11:03:47

标签: javascript jquery arrays

我在页面上有很多复选框,如下所示:

<input type="checkbox"  id="cb_31" class="observedType1">
<input type="checkbox"  id="cb_32" class="observedType1" checked="checked">
<input type="checkbox"  id="cb_33" class="observedType1">
<input type="checkbox"  id="cb_40" class="observedType2" checked="checked">

然后我想检索一个数组中所有复选框的类(理想情况下是一个唯一项列表),所以我正在寻找['observedType1'l'observedType2'].
我最好的想法是: var clss=$("[class*='observedType']:checked").attr("class"); 但这只给了我一个字符串&#34; observedType1&#34;。

我如何获得我想要的阵列? (或者&#34;列表&#34;循环进行)......

还有fiddle

2 个答案:

答案 0 :(得分:3)

您需要迭代所有:checked复选框,在这里您可以使用.map()

var clss=$("[class*='observedType']:checked").map(function(){
   return $(this).attr('class')
}).get();

Updated Fiddle

我建议您使用自定义data-*前缀自定义属性来存储任意数据。

<input type="checkbox" id="cb_31" class="observedType" data-type="observedType1">

可以使用.data()方法

检索哪些内容
var clss = $(".observedType:checked").map(function() {
  return $(this).data('type')
}).get();

With Custom attribute Fiddle

答案 1 :(得分:1)

您可以在javascript中执行以下操作:

var myInputs = document.getElementsByTagName('input');
var myCheckedInputs = Array.from(myInputs).filter(function(input) {
  return input.checked;
});