Step-1 : JS实现
//全选、取消全选的事件
function selectAll(){
console.log(1);
console.log($("#checkall").prop("checked"));
if ($("#checkall").prop("checked")) {
console.log(2);
$("input[type='checkbox'][name='checkedres']").prop("checked",true);//全选
} else {
console.log(3);
$("input[type='checkbox'][name='checkedres']").prop("checked",false); //取消全选
}
}
//子复选框的事件
function setSelectAll(){
//当没有选中某个子复选框时,SelectAll取消选中
if (!$("#checkedres").checked) {
$("#checkall").prop("checked", false);
}
var chsub = $("input[type='checkbox'][name='checkedres']").length; //获取subcheck的个数
var checkedsub = $("input[type='checkbox'][name='checkedres']:checked").length; //获取选中的subcheck的个数
if (checkedsub == chsub) {
$("#checkall").prop("checked", true);
}
}
Step-2 : HTML实现
//设置全选复选框
<input id="checkall" name="checkall" type="checkbox" onclick="selectAll()"/>全选
//设置子复选框
<input id="checkedres" name="checkedres" type="checkbox" onclick="setSelectAll()"/>item 1
<input id="checkedres" name="checkedres" type="checkbox" onclick="setSelectAll()"/>item 2
<input id="checkedres" name="checkedres" type="checkbox" onclick="setSelectAll()"/>item 3
<input id="checkedres" name="checkedres" type="checkbox" onclick="setSelectAll()"/>item 4
备注总结
因jQuery版本更迭问题,修改checked属性时不能使用attr()方法,应使用prop()方法,否则将出现全选功能只第一次有效的问题。