解決複選框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

相關文章
相關標籤/搜索