我有一组复选框,所以我在变量中分配了每一组。
var $set1 = $('.suppliers'), $set2 = $('.products'), $set3 = $('.customer')//etc...
然后在我的代码的某处,我想把每一组:在数组中检查值:
var set1Arr = [];
$set1.is(':checked').each(function() {
set1Arr.push($(this).val());
});
但是没有返回任何内容,我也调试了并且在控制台上它说Object没有'each'方法。 我尝试使用not(':checked')并且它工作正常,它返回未经检查的值。
答案 0 :(得分:1)
使用.map()创建数组
var set1Arr = $set1.filter(':checked').map(function() {
return this.value;
}).get();
.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