我使用以下代码选择页面中的所有复选框:
$(function(){
// add multiple select / deselect functionality
$("#selectall").click(function () {
$('.case').attr('checked', this.checked);
});
// if all checkbox are selected, check the selectall checkbox
// and viceversa
$(".case").click(function(){
if($(".case").length == $(".case:checked").length) {
$("#selectall").attr("checked", "checked");
} else {
$("#selectall").removeAttr("checked");
}
});
});
在此代码中选择所有复选框。但是,如果我们选择一些复选框并选择全部,则选择全部。在我们再次取消选中之后,选中除前一个复选框以外的所有复选框仍保持选中状态。
答案 0 :(得分:0)
attr
的{{1}}部分不正确:复选框的当前选中状态由$('.case').attr('checked', this.checked);
属性表示。对于checked
,checked
属性仅为the default checked state,而不是其当前的已检查状态。 (就像input
属性和value
属性之间的差异一样。)
要设置复选框的当前状态,请使用value
:
prop
$(function() {
// add multiple select / deselect functionality
$("#selectall").click(function() {
$('.case').prop('checked', this.checked);
});
// if all checkbox are selected, check the selectall checkbox
// and viceversa
$(".case").click(function() {
$("#selectall").prop("checked", $(".case").length == $(".case:checked").length);
});
});