MVC中复选框的jquery代码

MVC中复选框的jquery代码,jquery,asp.net-mvc,Jquery,Asp.net Mvc,此jQuery函数在警报(isChecked)中始终返回true,即使未选中: 请注意,AccuralCheckBox是Div的类名,而不是为复选框设置的类。我删除了代码if($(this).prop('checked','checked')),现在它总是以'false'返回 $('.accrualCheckbox').click(function () { var isChecked = $(this).attr('checked') ? true : false; alert

此jQuery函数在
警报(isChecked)
中始终返回true,即使未选中:

请注意,AccuralCheckBox是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>   

@复选框(“chkSalesAndMarketing”)
使用
$(this).prop('checked')
而不是
attr()

请参阅此处的属性与属性部分:

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

请参阅此处的属性与属性部分:

您需要使用
prop()
而不是
attr()
,或者您也可以执行以下操作:

var isChecked = $(this).is(':checked');
但是如果($(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);
        });
    }
});
您需要使用
prop()
而不是
attr()
,或者您也可以这样做:

var isChecked = $(this).is(':checked');
但是如果($(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);
        });
    }
});

最后一个})是什么意思;对应于?我不明白它为什么在那里。@phileaton我回滚了你的编辑,因为它不是“修复”,而是个人喜好的问题。他的方式和你改变它的方式一样是一种标准。这是他的帖子,所以应该保留他喜欢的风格。如果有什么需要修改的,那就是明显的额外的最终收尾(
})位于第一个代码块的末尾@user2543573,为什么会有?@AdiInbar可能是因为代码在文档就绪处理程序中,他不小心复制了结束符和他想要的函数post@koala_dev是的,可能吧,但我问了,而不是删除它,因为我认为在编辑中更正代码通常是个坏主意,因为您正在修复的内容可能与问题有关,或者可能有您不知道的目的。不,我不认为这两种情况都是这样,但作为一项规则,除了修复格式问题外,我从不编辑问题中的代码,除非先检查海报。如果你胡乱使用发布的代码,你就有可能改变问题。最后一个问题是什么;对应于?我不明白它为什么在那里。@phileaton我回滚了你的编辑,因为它不是“修复”,而是个人喜好的问题。他的方式和你改变它的方式一样是一种标准。这是他的帖子,所以应该保留他喜欢的风格。如果有什么需要修改的,那就是明显的额外的最终收尾(
})位于第一个代码块的末尾@user2543573,为什么会有?@AdiInbar可能是因为代码在文档就绪处理程序中,他不小心复制了结束符和他想要的函数post@koala_dev是的,可能吧,但我问了,而不是删除它,因为我认为在编辑中更正代码通常是个坏主意,因为您正在修复的内容可能与问题有关,或者可能有您不知道的目的。不,我不认为这两种情况都是这样,但作为一项规则,除了修复格式问题外,我从不编辑问题中的代码,除非先检查海报。如果你胡乱使用发布的代码,你可能会更改问题。请注意。AccuralCheckBox是Div的类名,而不是为复选框设置的类。我删除了代码if($(this).prop('checked','checked')),现在它总是以'false'返回@user2543573请将该详细信息添加到您的问题中,如果您只想处理点击复选框,只需更新点击处理程序的选择器,如下所示
$('.AccuralCheckBox:checkbox')。点击(函数…
谢谢,您的更改正在运行。我将此更新为答案。我还将详细信息添加到了问题中。请注意。AccuralCheckBox是Div的类名,而不是为复选框设置的类。如果($(this).prop('checked','checked'),我删除了代码,现在它总是返回为'false'@user2543573请将该详细信息添加到您的问题中,如果您只想处理单击复选框,只需更新单击处理程序的选择器,如下面所示
$('.accrualCheckbox:checkbox')。单击(功能…
谢谢,您的更改正在运行。我将此更新为答案。我还将详细信息添加到了问题中。