我想收集带有类名的选中复选框(值)并将它们放入数组中。就像那个:
var a = new Array();
$('.categoriesCb').each(function(i, item) {
if ($(item).prop('checked'))
{
a.push($(item).val());
}
alert(JSON.stringify(a));
});
我的问题有点大。不能用单行完成吗?11
答案 0 :(得分:1)
您可以将.map()
功能与.get()
一起使用。您还可以删除参数item
并使用上下文this
:
var a = $('.categoriesCb:checked').map(function(){
return $(this).val();
}).get();
答案 1 :(得分:1)
$('.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)
方法。
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;