본문 바로가기

카테고리 없음

checkbox 그룹별 컨트롤 버전 1.0


  $("#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));
   });
  }
 }

클래스로 묶어서 컨트롤 하려고 했지만.. 아직 미숙하여서 ㅎㅎ
나름 잘 쓰고 있지만 약간의 수정이 필요한듯 하네요..