jQuery,收集复选框并将选定的复选框放到数组中,这可能吗?

时间:2016-05-20 09:50:52

标签: javascript jquery arrays

我想收集带有类名的选中复选框(值)并将它们放入数组中。就像那个:

var a = new Array();
$('.categoriesCb').each(function(i, item) {
  if ($(item).prop('checked'))
  {
    a.push($(item).val());
  }
  alert(JSON.stringify(a));
});

我的问题有点大。不能用单行完成吗?11

4 个答案:

答案 0 :(得分:1)

您可以将.map()功能与.get()一起使用。您还可以删除参数item并使用上下文this

var a = $('.categoriesCb:checked').map(function(){
  return $(this).val();
}).get();

答案 1 :(得分:1)

使用jQuery.map()

$('.categoriesCb:checked').map(function() {
  return this.value;
}).get();

答案 2 :(得分:1)

另一种方法是将jQuery.makeArray().map()

一起使用

var arr = jQuery.makeArray($(':checked').map(function(){ return this.value; }));

$('pre').html(JSON.stringify(arr));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" checked name="options" value="1" />
<input type="checkbox" name="options" value="2" />
<input type="checkbox" name="options" value="3" />
<input type="checkbox" checked name="options" value="4" />
<input type="checkbox" checked name="options" value="5" />

<br>
<pre></pre>

答案 3 :(得分:1)

只是一个纯粹的JS单线。请注意,使用spread运算符进行数组转换的节点列表在Firefox中工作正常,但只有v51才能使用Chrome。否则你将不得不使用旧的Array.prototype.map.call(document.querySelectorAll("input[type=checkbox][checked]"), e => e.value)方法。

&#13;
&#13;
var arr = [...document.querySelectorAll("input[type=checkbox][checked]")].map(e => e.value);

console.log(JSON.stringify(arr));
&#13;
<input type="checkbox" checked name="options" value="1" />
<input type="checkbox" name="options" value="2" />
<input type="checkbox" name="options" value="3" />
<input type="checkbox" checked name="options" value="4" />
<input type="checkbox" checked name="options" value="5" />
&#13;
&#13;
&#13;