使用icheck选中所有复选框

时间:2015-02-27 20:00:24

标签: jquery checkbox icheck

我正在使用iCheck插件复选框。我在那里放了一个“全选”功能。结构:

  • 全选
  • Checkbox 1
  • Checkbox 2
  • Checkbox 3

检查“全部选择”时效果很好,所有复选框都会被选中。取消选中“全选”时,将取消选中所有复选框。但是,在选中“全选”后,如果取消选中任何复选框,则应自动取消选中“全选”,因为此时不会选中所有复选框。

为此,我写了这个:

$('#check-all').on('ifChanged', function(event){
    if($('.check').filter(':checked').length == $('.check').length) {
        $('#check-all').iCheck('check');
    } else {
        $('#check-all').iCheck('uncheck');
    }
    $('#check-all').iCheck('update');
});

但是,在输入此代码之后,我的复选框工作不正常,例如“全部选择”单击无效,需要经常多次点击。如果取消选中任何一个复选框,也不会取消选中“全选”。代码有什么问题?如何正确编写?

Fiddle work

1 个答案:

答案 0 :(得分:12)

// Remove the checked state from "All" if any checkbox is unchecked
$('.check').on('ifUnchecked', function (event) {
    $('#check-all').iCheck('uncheck');
});

// Make "All" checked if all checkboxes are checked
$('.check').on('ifChecked', function (event) {
    if ($('.check').filter(':checked').length == $('.check').length) {
        $('#check-all').iCheck('check');
    }
});

处理$('#check-all').on('ifUnchecked', ...虽然很棘手 - 它会触发其他处理,并且每个复选框都会被取消选中

fiddle