【问题标题】:Compare the number of total checkboxes to the number of checked checkboxes?将总复选框数与选中复选框数进行比较?
【发布时间】:2017-05-17 22:20:27
【问题描述】:

我有一个标题复选框和后续的“子”复选框,每次加载我的应用程序时都会以编程方式显示。

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

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);
 }
}
 });

【问题讨论】:

  • 在复选框中添加一个更改监听器,如果未选中检查是否所有兄弟姐妹都未选中,如果全部未选中则取消选中父项
  • 更新我原来的帖子。我有一个变化的听众,它只是不好。

标签: javascript jquery class checkbox


【解决方案1】:

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

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

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

编辑:Barmar 的方法更简洁

【讨论】:

    【解决方案2】:

    您可以简单地使用返回选中复选框的 jQuery 选择器,并使用 .length 来获取计数。

    var check_count = $(".children:checked").length;
    if (check_count == 0) {
        $(".header").prop("checked", false);
    }
    

    【讨论】:

    • 谢谢。这既简单又干净 - 虽然很多其他答案也很棒
    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2014-03-12
    • 2019-06-24
    相关资源
    最近更新 更多