zoukankan      html  css  js  c++  java
  • ztree选父不选子选子不选父

    var setting = {
                data: {
                    simpleData: {
                        enable: true
                    }
                }
                ,check: {
                    enable: true
                    , chkStyle: 'checkbox'
                    //,chkboxType:{ "Y": "", "N": "" }
                }
                ,callback:{
                    onCheck:function(e,treeId, treeNode){
                        if(treeId == "treeDemo") {
                            var zTreeObj = $.fn.zTree.getZTreeObj(treeId);
                            optParOrSon(treeId, treeNode,zTreeObj);
                        }
                    }
                }
            };
    //获取所有子节点
    	    var getChildsByTreeNode = function(treeNode,childsArr){
    	    	var childsArr = childsArr || [];
    	    	if (treeNode.isParent) {//是父节点则获取所有子节点
    	    		var childs = treeNode.children;
    	    		for(var i in childs){
    		        	childsArr.push(childs[i]);
    		        	getChildsByTreeNode(childs[i],childsArr);
    	        	}
    	    	}
    	    	return childsArr;
    	    };
    	    
    	    //获取所有父节点
    	    var getParsByTreeNode = function(treeNode,parsArr){
    	    	var parsArr = parsArr || [];
    	    	var parNode = treeNode.getParentNode();
    	    	if(parNode){
    	    		parsArr.push(parNode);
    	    		getParsByTreeNode(parNode,parsArr);
    	    	}
    	    	return parsArr;
    	    }
    

      

    /**
             * 选父不选子,选子不选父
             * */
            var optParOrSon = function(treeId,treeNode,zTreeObj){
                if(treeNode.checked){
                    //取消全部后代节点的选中
                    var childNodes = getChildsByTreeNode(treeNode);
                    for(var i in childNodes){
                        zTreeObj.checkNode(childNodes[i], false, false);
                    }
                    //同时全部祖先节点也不能被选中
                    if(treeNode.getParentNode()){
                        var parNodes = getParsByTreeNode(treeNode);
                        for(var i in parNodes){
                            zTreeObj.checkNode(parNodes[i], false, false);
                        }
                    }
                }
            };

    //展开选中节点
    var expandCheckedNode = function(){
       //获取所有选中状态的节点
       var checkedNodes = zTreeObj.getCheckedNodes(true);
       for(var i in checkedNodes){
           var checkedParAll = getParsAll(checkedNodes[i]);
          for(var j in checkedParAll){
              zTreeObj.expandNode(checkedParAll[j],true,false);
          }
       }
    };

     
  • 相关阅读:
    最近迷上用dvd字幕学习英语
    原始套接字
    c语言socket编程
    inet_aton和inet_network和inet_addr三者比较
    用man来查找c函数库
    ubuntu的系统日志配置文件的位置
    复制文件
    vim复制粘贴解密(转)
    vim的自动补齐功能
    两个数据结构ip和tcphdr
  • 原文地址:https://www.cnblogs.com/littleboyck/p/10912407.html
Copyright © 2011-2022 走看看