我有这个工作,但有一个小问题......
我有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个团体会怎么样?
有什么方法可以解决这个问题吗?
由于
答案 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]);
});