首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当所有项目未被选中时,如何取消选中“选择所有”复选框?

当所有项目未被选中时,如何取消选中“选择所有”复选框?
EN

Stack Overflow用户
提问于 2016-01-05 04:47:55
回答 4查看 2.1K关注 0票数 2

我试图选择所有的复选框,我陷入了一些问题。

当所有项目未被选中时,如何取消选中“选择所有”复选框?

这就是我试过的代码。

代码语言:javascript
复制
<input id="select-all" type="checkbox" name="select-all-cam">
<span class="txt-label">Select All</span>

<div class="list">
    <ul>
        <li>
            <input id="cam-1" type="checkbox" name="select-cam">
            <label for="cam-1">item1</label>
        </li>
        <li>
            <input id="cam-2" type="checkbox" name="select-cam">
            <label for="cam-2">item2</label>
        </li>

    </ul>
</div>

$('#select-all').click(function(event) {
    if (this.checked) {
        $('.list input[type="checkbox"]').each(function() {
            this.checked = true;
        });
    } else {
        $('.list input[type="checkbox"]').each(function() {
            this.checked = false;
        });
    }
});

演示:https://fiddle.jshell.net/0j19t3g5/

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-05 04:52:16

可以将change事件侦听器添加到.list中的复选框元素中,并确定复选框的数量是否与总数相同。

Updated Example

代码语言:javascript
复制
$('.list input[type="checkbox"]').on('change', function () {
  var allChecked = $('.list input:checked').length === $('.list input').length;
  $('#select-all').prop('checked', allChecked);
});

这种方法的好处是,如果选中所有其他复选框,则选中“Select”复选框;如果其中一个复选框未选中,则同样不选中。

我还将click事件侦听器更改为change事件侦听器。还可以将初始事件侦听器缩短为以下内容:

代码语言:javascript
复制
$('#select-all').on('change', function() {
  $('.list input[type="checkbox"]').prop('checked', this.checked);
});
票数 7
EN

Stack Overflow用户

发布于 2016-01-05 04:57:40

也添加了这段代码.

代码语言:javascript
复制
 $(".list input[type=checkbox]").change(function(event){
              var checked_count = $(".list input[type=checkbox]:checked").length;
              var max_checks = $(".list input[type=checkbox]").length;;
              if(checked_count==max_checks){
                $('#select-all').prop("checked",true);
              }else{
                $('#select-all').prop("checked",false);
              }
    });
票数 1
EN

Stack Overflow用户

发布于 2016-01-05 04:54:49

试试这段代码

代码语言:javascript
复制
 $('.list input[type="checkbox"]').on('change', function () {
      if($('.list input:checked').length === $('.list input').length){
      $('#select-all').prop('checked', true);}
      else{
      $('#select-all').prop('checked', false);   
      }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34604334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档