function removeSelection(button) {
$('#a').bind('click', function() {
if($(button).hasClass('checked')) {
alert("a");
$(this).find('input:checkbox').attr('checked', 'false');
$(button).removeClass("checked");
}
else {
alert("b");
$(this).find('input:checkbox').attr('checked', 'checked');
$(button).addClass("checked");
}
});
}
行为:
first click - Alert('b')
second click Alert('a') Alert('b')
third click Alert('a') Alert('b') Alert('a')
应该是什么:
first click - Alert('b')
second click Alert('a')
third click Alert('b')
有什么问题?
答案 0 :(得分:3)
如果您使用的是jQuery 1.9,请使用prop()代替attr()。并使用true和false进行检查和取消选中。
function removeSelection(button) {
$('#a').bind('click', function() {
if($(button).hasClass('checked')) {
alert("a");
$(this).find('input:checkbox').prop('checked', false);
$(button).removeClass("checked");
}
else {
alert("b");
$(this).find('input:checkbox').prop('checked', true);
$(button).addClass("checked");
}
});
}
然而,最重要的概念要记住检查 属性是它与checked属性不对应。该 attribute实际上对应于defaultChecked属性和 应该只用于设置复选框的初始值。该 checked属性值不随状态而变化 复选框,而checked属性。因此, 跨浏览器兼容的方式来确定是否选中了复选框 使用属性Reference
答案 1 :(得分:0)
您必须从标记中删除“已检查”属性。这不是css的问题。