$("#ChkGroup input:checkbox").bind("click", function(){
CKGroupControl($("#ChkGroup input:checkbox"), $(this));
});
function CKGroupControl(TotalObj, Obj){
setCKGParent(TotalObj, Obj);
setCKGChild(TotalObj, Obj);
}
function getCKGParent(TotalObj, Chl){
return (TotalObj.filter("[value=" + $(Chl).attr("pvalue") + "]").length > 0) ? TotalObj.filter("[value=" + $(Chl).attr("pvalue") + "]") : null;
}
function setCKGParent(TotalObj, Chl){
if(getCKGParent(TotalObj, Chl) != null){
var setObj = (TotalObj.filter("[pvalue=" + Chl.attr("pvalue") + "]:checked").length == 0) ? {"indeterminate":false, "checked":false} :
(TotalObj.filter("[pvalue=" + Chl.attr("pvalue") + "]").length == TotalObj.filter("[pvalue=" + Chl.attr("pvalue") + "]:checked").length) ?
{"indeterminate":false, "checked":true} : {"indeterminate":true, "checked":false};
getCKGParent(TotalObj, Chl).each(function(){
$(this).attr(setObj);
setCKGParent(TotalObj, $(this));
});
}
}
function getCKGChild(TotalObj, Par){
return (TotalObj.filter("[pvalue=" + $(Par).val() + "]").length > 0) ? TotalObj.filter("[pvalue=" + $(Par).val() + "]") : null;
}
function setCKGChild(TotalObj, Par){
if(getCKGChild(TotalObj, Par) != null){
getCKGChild(TotalObj, Par).each(function(){
$(this).attr({"checked":Par.attr("checked")});
setCKGChild(TotalObj, $(this));
});
}
}
클래스로 묶어서 컨트롤 하려고 했지만.. 아직 미숙하여서 ㅎㅎ
나름 잘 쓰고 있지만 약간의 수정이 필요한듯 하네요..