返回:使用is()选中复选框值

Return :checked checkboxes value with is()

本文关键字:复选框 使用 is 返回      更新时间:2024-02-13

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

var $set1 = $('.suppliers'), $set2 = $('.products'), $set3 = $('.customer')//etc...

然后在我的代码的某个地方,我想把每个集合:检查值放在一个数组中:

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

但什么都没有返回,我也进行了调试,在控制台上它说Object并没有方法"each"。我尝试使用not(":checked"),它运行正常,返回了未检查的值。

使用.map()创建数组

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

.filter()

.is()返回一个布尔值。

使用filter(':checked')

not()不是is()的对立面,而是!.is()。CCD_ 5与CCD_ 6相反。


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

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

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

not()是一种过滤方法,它使用选择器检查每个元素,只返回与选择器不匹配的元素。

您需要使用.filter()

var set1Arr = [];
$set1.filter(':checked').each(function() {
   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());
});
$set1.each(function() {
   if($(this).is(':checked')){
       set1Arr.push($(this).val());
   }
});

试试这个:

var checkboxValue = $(this).prop('checked');

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