将总复选框的数量与已选中复选框的数量进行比较?

时间:2017-01-03 18:28:12

标签: javascript jquery class checkbox

我有一个标题复选框和随后的"孩子"每次我的应用加载时以编程方式显示的复选框。

我试图确保如果用户取消选中所有子框,则会自动取消选中标题。我在开始时通过页面上的所有复选框进行映射:

var x = '';
$(document).ready(function() {
  $('.class').map(function () {
    x += ('Yes');
  });
    alert(x);
});

这给了我一个数组"是"对于每个部分中存在的复选框的数量。

我需要能够将数组切片为任何内容,因为用户取消选中该类中的框。我被卡住了。

这是我的变革听众:

$(':checkbox').change(function () {
if(**THE CHECKBOX I AM UNCHECKING HAS THE CLASS**) {
  x.slice(-1);
 } 
});

解决方案:

<input class='children' type='checkbox'/>
<input class='children' type='checkbox'/>
<input class='header' type='checkbox'/>

var check_count = $(".children:checked").length;

$(".children").change(function () {
if(!this.checked) {
 if (check_count == 0) {
$(".header").prop("checked", false);
 }
}
 });

2 个答案:

答案 0 :(得分:1)

您可以简单地使用返回已选中复选框的jQuery选择器,并使用from itertools import permutations, product a='ABC' b=['*', '%3A'] l=[a]*2+[b] def g(list): for p in permutations(list): yield from product(*p) result=g(l) 来获取计数。

.length

答案 1 :(得分:0)

可能不是最有效的,但这样的事情可能有用。每次用户点击复选框时,它都会查看所有其他复选框。如果至少有一个人有支票,则说明是假的,然后退出。如果没有选中,则取消选中父级。

$(".childrenCheckBoxes").change(function(){

  $(".childrenCheckBoxes").each(function(){
    if (this.checked)
      return false;
  });
  $("#parentCheckBox").prop('checked', false);
  return true;
});

编辑:Barmar的方法更清晰