快速而肮脏。我想检查是否选中了所有子项复选框,因此我将转换
$(this).parent().find(':checkbox').is(':checked')
进入布尔数组,以便使用if
方法在every()
条件下进行检查。
我试过了every()
,toArray()
,makeArray
以及它们的任意组合。
这有什么方法?
答案 0 :(得分:5)
你可以这样做:
var arr = $(this).parent().find(':checkbox').map(function() {
return this.checked;
}).get();
如果你只是想看看是否所有的孩子都被检查了,那就得到bool数组:
var areAllChecked = $(this).parent().find(':checkbox:not(:checked)').length === 0;
答案 1 :(得分:2)
如果你想检查是否所有都被检查,那么测试是否有任何未被检查然后否定它
!$(this).parent().find(':checkbox').is(':not(:checked)')
答案 2 :(得分:1)
我想检查是否选中了所有子项复选框
我想你可以使用这种语法来实现它,而不是涉及一组布尔值。
var allAreChecked = ($(this).parent().find(':checkbox').not(':checked').length === 0);
答案 3 :(得分:1)
tymeJV's回答的变化:
$(this).parent().find(':checkbox').get().every(function(el){ return el.checked });
这只是get
元素的基础数组,并直接在该数组上使用every
来检查相关属性。如果任何复选框失败,它将返回false {。{1}}。
演示:
this.checked
function allChecked(){
return $(this).parent().find(':checkbox').get().every(function(el){
return el.checked
});
}
$('button').on('click', function(){ alert( allChecked.call(this) ) })