Javascript 返回:选中值为()的复选框

Javascript 返回:选中值为()的复选框,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,我有一组复选框,所以我在变量中分配了每一组 var $set1 = $('.suppliers'), $set2 = $('.products'), $set3 = $('.customer')//etc... 然后在我的代码中的某个地方,我想将每个集合:选中的值放入一个数组中: var set1Arr = []; $set1.is(':checked').each(function() { set1Arr.push($(this).val()); }); 但并没有返回任何内容,我也

我有一组复选框,所以我在变量中分配了每一组

var $set1 = $('.suppliers'), $set2 = $('.products'), $set3 = $('.customer')//etc...
然后在我的代码中的某个地方,我想将每个集合:选中的值放入一个数组中:

var set1Arr = [];

$set1.is(':checked').each(function() {
   set1Arr.push($(this).val());
});
但并没有返回任何内容,我也进行了调试,在控制台上显示该对象并没有“each”方法。 我尝试使用not(“:checked”),它工作正常,返回了未检查的值。

您需要使用.filter()

或者更好

var set1Arr =  $set1.filter(':checked').map(function() {
   return this.value
}).get();
使用
过滤器(':checked')

not()
不是
is()
的对立面,而是
!。is()
。另一方面,
filter()
not()
相反


你只是误解了这两种方法的工作原理

is()
检查当前元素集中是否有一个元素与选择器匹配,并返回一个
布尔值:

if($('input[type="checkbox"]').is(':checked')){
    //if at least one checkbox is checked do something...
}
not()

$set1.each(function() {
    if($(this).is(':checked'))
        set1Arr.push($(this).val());
});
用于创建数组

var set1Arr = $set1.filter(':checked').map(function() {
   return this.value;
}).get();


返回布尔值。

请尝试以下操作:

$set1.each(function() {
   if($(this).is(':checked')){
       set1Arr.push($(this).val());
   }
});
var checkboxValue = $(this).prop('checked');

$(this).is(':checked'); //return boolean 

$set1.filter(':checked')。每个(…)
,我都看到了OK,所以它们是不同的方法,这是一个很好的解释。
$(this).is(':checked'); //return boolean