0

这个 jQuery 函数总是在 中返回 true alert(isChecked),即使未选中:
请注意 .accrualCheckbox 是 Div 的类名,而不是为复选框设置的类。我删除了代码 if ($(this).prop('checked', 'checked')),现在它总是返回为 'false'

$('.accrualCheckbox').click(function () {
    var isChecked = $(this).attr('checked') ? true : false;
    alert($(this).attr('checked'));
    alert(isChecked);
    if ($(this).prop('checked', 'checked')) {
        var parentDiv = $(this).parents('.searchLine');
        $(parentDiv).css('border', '1px solid red');

        //Checkbox
        $(parentDiv).find("input[type=text]").each(function () {
            $(this).val('B');
            $(this).prop('disabled', true);
        });
    }
});
});

我将复选框保留在 div 中:

<div class="accrualCheckbox">
    @Html.CheckBox("chkSalesAndMarketing")
</div>   
4

2 回答 2

3

您需要使用prop()代替,attr()或者您也可以这样做:

var isChecked = $(this).is(':checked');

但这if ($(this).prop('checked', 'checked'))将始终返回 true,因为您将值设置为checked条件内部

更新 我假设这是你想要做的:

$('.accrualCheckbox :checkbox').click(function () {
    if ($(this).is(':checked')) {  // or $(this).prop('checked');
        var parentDiv = $(this).closest('.searchLine');
        $(parentDiv).css('border', '1px solid red');
        //Checkbox
        $(parentDiv).find(":text").each(function () {
            $(this).val('B');
            $(this).prop('disabled', true);
        });
    }
});
于 2013-08-21T18:06:59.530 回答
1

使用$(this).prop('checked')而不是attr().

请参阅此处的属性与属性部分:http: //api.jquery.com/prop/

于 2013-08-21T18:00:18.473 回答