0

我遇到了一些 jQuery 或 HTML 的问题。

我有一些复选框。而且我想要一个“主要”复选框,以便在选中“主要”时检查该类别下的几个复选框。

好吧,没关系。我是这样解决的:

    $('#extraPolish').change(function() {
    if ($("#extraPolish").is(':checked') == true) {
        $("#extraPolish_Inside").attr('checked', 'checked');
        $("#extraPolish_UnderFender").attr('checked', 'checked');
        $("#extraPolish_OverFender").attr('checked', 'checked');
        console.log('checkd');
    } else {
        $("#extraPolish_Inside").removeAttr('checked');
        $("#extraPolish_UnderFender").removeAttr('checked');
        $("#extraPolish_OverFender").removeAttr('checked');
    }
});

因此,当您选中#extraPolish 时,那些在下面的会被选中,而当您删除对#extraPolish 的选中时,那些将被取消选中。

问题是当我尝试再次检查它们时,它会显示在 HTML 代码中,但不会在我的 Google Chrome 上得到检查。

任何想法?

4

4 回答 4

2

正如其他人所说 - 使用 jquery 1.9prop()是你想要的功能 .attr() 做一些不同的事情,首先错过了......

这将是我的解决方案。

$(document).ready(function () {
    $('#extraPolish').change(function() {
        $("#extraPolish_Inside").prop('checked', this.checked);
        $("#extraPolish_UnderFender").prop('checked', this.checked);
        $("#extraPolish_OverFender").prop('checked', this.checked);
        return false;
    });
});
于 2013-02-20T18:18:35.957 回答
0

尝试使用$("#extraPolish_Inside').prop('checked', true);and$("#extraPolish_Inside').prop('checked', false);而不是$("#extraPolish_Inside").attr('checked', 'checked');

编辑:jsfiddle 示例 - http://jsfiddle.net/rvtvr/1

于 2013-02-20T18:17:11.873 回答
0

与其完全删除该checked属性,不如尝试将其简单地设置为 null。

$('#extraPolish_Inside').attr('checked',null); 

这是一个简单的演示

于 2013-02-20T18:17:36.947 回答
0

使用.prop('checked', false);and.prop('checked', true);代替。

$(document).ready(function () {
    $('#extraPolish').change(function() {
        if ($("#extraPolish").is(':checked') == true) {
            $("#extraPolish_Inside").prop('checked', true);
            $("#extraPolish_UnderFender").prop('checked', true);
            $("#extraPolish_OverFender").prop('checked', true);
            console.log('checkd');
        } else {
            $("#extraPolish_Inside").prop('checked', false);
            $("#extraPolish_UnderFender").prop('checked', false);
            $("#extraPolish_OverFender").prop('checked', false);
        }
        return false;
    });
});

jsFiddle 示例

请参阅http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-以获得完整的解释以及为什么 jQuery 1.9 和更早版本之间的行为不同。

于 2013-02-20T18:32:42.430 回答