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

时间:2014-10-22 13:41:05

标签: javascript jquery

快速而肮脏。我想检查是否选中了所有子项复选框,因此我将转换

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

进入布尔数组,以便使用if方法在every()条件下进行检查。 我试过了every()toArray()makeArray以及它们的任意组合。 这有什么方法?

4 个答案:

答案 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) ) })