1

目前我正在研究一个小的 jQuery 元素。我有 2 个主要复选框:ja 和 nee。选中其中一个框时,会打开一个子菜单,并根据您选中的主复选框(ja 或 nee)填写子菜单中的复选框。这工作正常。

在子菜单中,用户可以选择 ja 或 nee,其中包含初始单击时填充的复选框。我遇到的问题是,当用户首先将主复选框选中为“nee”,然后将子菜单中的复选框更改为“ja”时,主复选框保持在“nee”。

所以我想我可以用 if/else 语句解决这个问题,但我不知道该怎么做。我这样做是为了让所有复选框在未选中时都处于“选中”状态或无状态,它们也有类(“ja”和“no”)。

这是我现在使用的 jQuery 代码

$('.open_sub_ja').click(function () {
                $(this).parents('.container_vragen').find('.ja').attr('checked', this.checked);
                $(this).parents('.container_vragen').find('.nee').removeAttr('checked');
            });

            $('.open_sub_nee').click(function () {
                $(this).parents('.container_vragen').find('.ja').removeAttr('checked');
                $(this).parents('.container_vragen').find('.nee').attr('checked', this.checked);
            });

                $('.ja').click(function () {
                    $(this).parents('.antwoorden').find('.ja').attr('checked', this.checked);
                    $(this).parents('.antwoorden').find('.nee').removeAttr('checked');
                });

                $('.nee').click(function () {
                    $(this).parents('.antwoorden').find('.ja').removeAttr('checked');
                    $(this).parents('.antwoorden').find('.nee').attr('checked', this.checked);
                });

可以在这里找到一个小的 jsFiddle http://jsfiddle.net/Macjm/。任何帮助都会很有帮助,因为我对 if/else 语句知之甚少。

4

1 回答 1

0

这里有两个问题:

  1. 您需要能够跟踪与子菜单的其他检查ja或输入相关的检查或输入。neejanee

  2. 当计数等于子菜单或输入的数量时,您需要能够检查父级ja或输入。neejanee

一种方法是使用一些变量和一些额外的检查。

我将在ja这里介绍输入的情况。相同的过程用于nee输入。

开始在.jaclick 函数中,我在现有代码之后添加了两个变量:

var _ja = $(this).parents('.submenu').find('.ja');
var _jaCount = 0;

_ja是所有子菜单ja输入的 jquery 对象。_jaCount是一个变量,用于跟踪ja检查了多少输入。

然后我做这样的检查:

_ja.each(function(){
    if($(this).prop('checked') == true){
        _jaCount++;
    }
});

在这里,我遍历所有子菜单ja输入并检查它们是否被选中。如果是,我将我的 coutner 增加 1。

在此检查之后,我有以下声明:

if(_jaCount == _ja.length){
    $('.open_sub_ja').prop('checked',true);
    $('.open_sub_nee').prop('checked',false);
}else{
    $('.open_sub_ja').prop('checked',false);
    $('.open_sub_nee').prop('checked',false);
}

这样做是检查计数是否等于ja子菜单中的输入量。如果是,则将 paretja输入设置为选中,将父nee输入设置为未选中。此外,如果计数不相等,它会将两个父母都设置为未选中,因为那时您处于混合状态。如果这不是可取的,那么您只需删除 else 情况。

通过这种方式,您可以将 submeuja输入状态链接到父状态。

这是您的小提琴的修改版本。

于 2013-07-16T18:55:38.063 回答