JSFiddle:Part2中的组复选框

时间:2013-07-09 12:50:56

标签: javascript jquery jsfiddle

Group checkboxes in JSFiddle : Part 1

解决第1部分全局复选框以进行全部检查/取消选中之后。我还有其他几个问题要解决。

  1. 如果我取消选中列表中的任何项目。应取消选中自动全局(全部检查)。
  2. enter image description here

    1. 如果我单独检查了所有项目。应检查自动全局(全部检查)。像这样。 enter image description here
    2. 代码

       <fieldset>
          <!-- these will be affected by check all -->
          <div><input type="checkbox" ID="checkall1"> Check all</div>
          <div><input type="checkbox"> Checkbox</div>
          <div><input type="checkbox"> Checkbox</div>
          <div><input type="checkbox"> Checkbox</div>
      </fieldset>
      <fieldset>
          <!-- these won't be affected by check all; different field set -->
          <div><input type="checkbox" ID="checkall2"> Check all</div>
          <div><input type="checkbox"> Checkbox</div>
          <div><input type="checkbox"> Checkbox</div>
          <div><input type="checkbox"> Checkbox</div>
      </fieldset>
      

      JS

         $('[id^=checkall]').click(function(){
          $(this).closest('fieldset').find('input').not(this).prop('checked',this.checked);
      });
      

      JSFiddle

1 个答案:

答案 0 :(得分:0)

注册一个回调函数,用于检查当前组中的所有复选框是否都已选中

$('input[id^=checkall]').click(function(){
    $(this).closest('fieldset').find('input').not(this).prop('checked',this.checked);
});

$(':checkbox').not('[id^=checkall]').click(function(){
    var all = $(this).closest('fieldset').find('[id^=checkall]');
    var chks = $(this).closest('fieldset').find('input').not(all);

    all.prop('checked', chks.length == chks.filter(':checked').length);
})

演示:Fiddle