Jquery切换多个复选框

时间:2014-10-22 11:30:45

标签: jquery checkbox toggle

我有这个工作,但有一个小问题......

我有2个3个复选框。 A组和B组

如果我选择全部'对于A组,然后切换组A中的所有复选框状态。

如果我然后选择所有'对于B组,我必须单击它两次才能更改B组复选框状态。

这是我使用的JQuery:

var checked = false;     
$('.all').click(function () {
    e = $(this).attr('name');
    checked = !checked;
    $('input[class=' + e ).prop('checked', checked);
});

我创建了一个小提琴示例 http://jsfiddle.net/1kgneajL/

为什么我必须从B组点击两次?我计划增加更多的小组,所以我需要确保这不会变得更糟。如果我有10个团体会怎么样?

有什么方法可以解决这个问题吗?

由于

3 个答案:

答案 0 :(得分:1)

因此:

var checked = false;   

这两个组都使用相同的变量...所以当你将A组设为false时,当你点击B组时,它也会是假的......即使在B组中检查了所有方框

将组检查存储在组上下文中的quickfix:

    $('.all').click(function () {
        e = $(this).attr('name');

        checked = $(this).attr('checked');
        checked = !checked;
        $(this).attr('checked', checked);

        $('input[class=' + e + ']').prop('checked', checked);
    });

不再需要checked变量

答案 1 :(得分:0)

因为全球

var checked = false;

它适用于两个组。你应该检查了GroupeA和checkedGroupB。

答案 2 :(得分:0)

here已修改您的演示版。 您应该为每个分开的组存储已检查状态。

var checked = {A:false, B:false};    
$('.all').click(function () {
    e = $(this).attr('name');
    checked[e] = !checked[e];
    $('.' + e ).prop('checked', checked[e]);
});