这个jQuery函数总是在alert(isChecked)
中返回true,即使未经检查也是如此:
请注意.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>
答案 0 :(得分: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);
});
}
});
答案 1 :(得分:1)
使用$(this).prop('checked')
代替attr()
。
请参阅此处的属性与属性部分:http://api.jquery.com/prop/