返回:选中复选框值为is()

时间:2013-12-03 06:57:55

标签: javascript jquery html checkbox

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

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

然后在我的代码的某处,我想把每一组:在数组中检查值:

var set1Arr = [];

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

但是没有返回任何内容,我也调试了并且在控制台上它说Object没有'each'方法。 我尝试使用not(':checked')并且它工作正常,它返回未经检查的值。

6 个答案:

答案 0 :(得分:1)

使用.map()创建数组

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

.filter()

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

答案 1 :(得分:0)

您需要使用.filter()

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

或更好

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

答案 2 :(得分:0)

使用filter(':checked')

not()is()不同,但它是!.is()。另一方面,filter()not()相反。


你误解了两种方法的运作方式。

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

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

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

答案 3 :(得分:0)

尝试

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

试试这个:

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

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