将jquery条件is(':checked')转换为布尔数组

convert jquery condition is(':checked') into boolean array

本文关键字:转换 布尔 数组 checked 条件 jquery is      更新时间:2023-09-26

快速且肮脏。我想检查是否所有的孩子复选框都被选中,所以我会转换

$(this).parent().find(':checkbox').is(':checked')

转换为布尔数组,以便用every()方法在if条件下对其进行检查。我试过every()toArray()makeArray和它们的任何组合。哪条路正确?

你可以做:

var arr = $(this).parent().find(':checkbox').map(function() {
    return this.checked;
}).get();

如果你只想看看是否所有的孩子都被检查了,就会得到bool数组:

var areAllChecked = $(this).parent().find(':checkbox:not(:checked)').length === 0;

如果你想检查是否所有都检查过,那么测试是否有没有检查过,然后像一样否定它

!$(this).parent().find(':checkbox').is(':not(:checked)')

我想检查是否选中了所有子项复选框

我想您可以使用这种语法来实现这一点,而不是使用布尔值数组。

var allAreChecked = ($(this).parent().find(':checkbox').not(':checked').length === 0);

tymeJV答案的变化:

$(this).parent().find(':checkbox').get().every(function(el){ return el.checked });

这只是get是元素的底层数组,并直接在该数组上使用every来检查相关属性。如果任何复选框未通过this.checked,则返回false。

演示:

function allChecked(){
  return $(this).parent().find(':checkbox').get().every(function(el){
    return el.checked 
  });
}
$('button').on('click', function(){ alert( allChecked.call(this) ) })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<button>All checked?</button>