解决复选框checked=checked无效问题

在作权限管理的时候,作了一个功能,就是当勾选栏目,把全部的权限全勾上。刚开始使用了以下代码:jquery

function check(id,check) {
	if (check) {
		$("." + id).find("input[type='checkbox']").attr("checked", true);
	} else {
		$("." + id).find("input[type='checkbox']").attr("checked", false);
	}
}

 

第一遍勾选和取消是有效的,可是第二遍之后就没反应了,查看了属性,发现checked属性一直存在,可是没显示勾。就考虑移除checked属性看看。.net

function check(id,check) {
	if (check) {
		$("." + id).find("input[type='checkbox']").attr("checked", true);
	} else {
		$("." + id).find("input[type='checkbox']").removeAttr("checked");
	}
}

 

此次看到checked属性勾上有了,取消就没了,但是问题仍是没解决,仍是第二遍之后就没反应了。看jQuery手册上说1.6如下版本在IE6使用JQuery的removeAttr方法删除disabled是无效的。解决的方法就是使用$("XX").prop("disabled",false);rem

function check(id,check) {
	if (check) {
		$("." + id).find("input[type='checkbox']").prop("checked", true);
	} else {
		$("." + id).find("input[type='checkbox']").removeAttr("checked");
	}
}

写成这样,问题解决,我估计手册上说的修复只修复了一遍,以后仍是会出问题,因此最保险的仍是用prop。get

相关文章
相关标签/搜索