1

我在这里看到了几个“检查所有”的解决方案,但没有一个可以反过来:当所有选项都被选中时,选择全局复选框。

我有一个组列表。每个组有 4 个项目,底部有一个“全部取消订阅”选项。

到目前为止,我已经能够处理“检查所有”选项,但我正在努力检查组的“取消订阅所有”选项,当已经选择了所有取消订阅选项。

这是迄今为止我所拥有的DEMO (现在很旧)。底部是我为此编写的一段代码,但当然,它不起作用。

其他功能都很好,除了这个是我需要帮助的。

任何帮助是极大的赞赏。

谢谢。

编辑 - 添加指向小提琴的链接,因为解决方案隐藏在下面的评论中。感谢j08691的脚本。

演示

4

2 回答 2

1

您需要一个change()事件radio按钮,如下所示:

$('.opt-out input[type=radio]').on('change', function() {
    var table = $(this).closest('table'),
        checkedBoxes = table.find('.opt-out input[type=radio]:checked').length,
        total = table.find('.opt-out input[type=radio]').length;
        table
           .find('input[type=checkbox].unsubs-chkbx-group')
           .attr('checked', checkedBoxes === total);
});

演示

笔记

:radio不推荐使用选择器是 jQuery 1.8

于 2012-08-14T19:15:44.040 回答
1

添加这段代码:

$(".opt-out input:radio").click(function() {
    if($(this).parents('table').find(".opt-out input:checked").length==4)$(this).parents('table').find(".unsubs-chkbx-group").attr('checked','checked');
});

jsFiddle 示例

于 2012-08-14T19:24:45.980 回答