dwz笔记之tree权限扩展

时间:2023-03-08 20:51:50

碰到的问题:tree选择子节点时,父级节点的值没有选择

解决方法如下(红色部分):

原代码:

_checkParent:function(){
            if($(this).parent().hasClass("tree")) return;
            var parent = $(this).parent().parent();
            var stree = $(">ul", parent);
            var ckbox = stree.find(">li>a").size()+stree.find("div.ckbox").size();
            var ckboxed = stree.find("div.checked").size();
            var aClass = (ckboxed==ckbox?"checked":(ckboxed!=0?"indeterminate":"unchecked"));
            var rClass = (ckboxed==ckbox?"indeterminate":(ckboxed!=0?"checked":"indeterminate"));
            $(">div>.ckbox", parent).removeClass("unchecked").removeClass("checked").removeClass(rClass).addClass(aClass);

            var $checkbox = $(":checkbox", parent);
            if (aClass == "checked") $checkbox.attr("checked","checked");
            else if (aClass == "unchecked") $checkbox.removeAttr("checked");

            parent._checkParent();
        }

扩展后代码:

_checkParent:function(){
            if($(this).parent().hasClass("tree")) return;
            var parent = $(this).parent().parent();
            var stree = $(">ul", parent);
            var ckbox = stree.find(">li>a").size()+stree.find("div.ckbox").size();
            var ckboxed = stree.find("div.checked").size();
            var aClass = (ckboxed==ckbox?"checked":(ckboxed!=0?"indeterminate":"unchecked"));
            var rClass = (ckboxed==ckbox?"indeterminate":(ckboxed!=0?"checked":"indeterminate"));
            $(">div>.ckbox", parent).removeClass("unchecked").removeClass("checked").removeClass(rClass).addClass(aClass);

            var $checkbox = $(":checkbox", parent).eq(0);//只选择这一级节点的第一个checkbox
            if (aClass == "checked"||aClass == "indeterminate") //当样式为indeterminate时,也选择这一个父节点的值          $checkbox.attr("checked","checked");         else if (aClass == "unchecked")           $checkbox.removeAttr("checked");         parent._checkParent();     }