jquery - 使用 icheck 选择所有复选框

标签 jquery checkbox icheck

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

  • 全选
  • 复选框 1
  • 复选框 2
  • 复选框 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

最佳答案

// 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

关于jquery - 使用 icheck 选择所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773300/

相关文章:

javascript - jquery 动画在 x 和 y 轴上滚动

javascript - 如何限制滚动到固定的 Div?

javascript - 使用ajax控制复选框 Action

jquery - 单选框,获取勾选的值【iCheck】

javascript - jQuery 替换部分 URL

javascript - 检查地址栏中的字符串是否与 li id 匹配

javascript - 如何查找具有特定类名的类内的控件

vba - 跳过复选框 Click() 函数 [VBA]

css - iCheck 库输入大小

jquery - Meteor 0.9.1.1 中的 iCheck.js