我试图将我的假(但美丽)复选框绑定到真实的复选框。最初我可以选择所有这些,但我无法取消选择它们。控制台总是说:无论我点击假复选框多少次都是如此。
$('.checkbox').click(function(){
if($(this).prev().prev().prop('checked')==true){
$(this).prev().prev().prop('checked',false);
console.log($(this).prev().prev().prop('checked'));
$(this).removeClass('checkbox_checked');
$(this).addClass('checkbox_clear');
}
else {
$(this).prev().prev().prop('checked',true);
console.log($(this).prev().prev().prop('checked'));
$(this).removeClass('checkbox_clear');
$(this).addClass('checkbox_checked');
}
});
任何想法都表示赞赏。
PS:这是html。
<input data-val="true" data-val-required="The isChecked field is required." id="5_1" name="options[1].isChecked" value="true" type="checkbox">
<input name="options[1].isChecked" value="false" type="hidden">
<label class="checkbox" for="5_1">Spring</label>
答案 0 :(得分:2)
问题是LABEL将复选框设置为true或false。您还将复选框的选中设置为true或false。你不必这样做!让浏览器进行检查!!它总是如此,因为你使它成为现实。
所有那些prev()的东西看起来都很吓人。我个人只会使用id。
$(document).on("click","label.checkbox", function() {
var label = $(this);
var isChecked = !$("#" + label.attr("for")).prop("checked"); //does not get checked until after label is fully clicked, hence the !
label.toggleClass("checked", isChecked);
});
JSFiddle:http://jsfiddle.net/4ZKFS/