ZTREE如何获取所有选中最底层节点(下面没有子节点)和这些节点的父。需要格式如下:
所有选中的最底层子节点:机房环境,防火墙,应用安全,安全管理制度
所有选中的最底层子节点和对应的父节点:技术对象/物理安全/机房环境,技术对象/网络安全/防火墙,技术对象/应用安全,管理对象/安全管理制度

解决方案 »

  1.   

    获取之后循环判断,ztree应该 不会提供你需要的这种结果的方法,但是会有获取选中和获取父类的方法,你可以通过这些方法进行判断筛选。
      

  2.   

    <script type="text/javascript">
    var s_child="",s_parent="";
    var treeObj = $.fn.zTree.getZTreeObj("tree");//树控件
    var nodes = treeObj.getCheckedNodes(true);//获取所有选择的节点
    for(var i=0;i<nodes.length;i++){
        if(nodes[i].isParent){
            s_parent+=nodes[i].name+",";//父节点
        }else{
            s_child+=nodes[i].name+",";//子节点
        }
    }
    alert(s_parent+"\n"+s_child);
    </script>
      

  3.   

    楼上还是没有完全对,但给我一些思路,最后还是自己写出来了。
    function GetMultItemValues(treeID) {
        var treeObj = $.fn.zTree.getZTreeObj(treeID);
        var nodes = treeObj.getCheckedNodes(true);
        var s1 = "";
        var childIdList = "";    
        var parentNameList = "";    
        var childNodes;   
        
        for(i = 0; i < nodes.length; i++) {      
            childNodes = treeObj.transformToArray(nodes[i]);  //取得当前节点下面的所有子节点
            
            if (childNodes.length == 1){
                parentNameList += _GetChkParentNodes(nodes[i], "name", "/", "desc") + ",";
                childIdList += nodes[i].id + ",";
            }
        }
        
        parentNameList = parentNameList.substring(1,parentNameList.length-1);
        childIdList = childIdList.substring(0,childIdList.length-1);    
        return parentNameList + "&" + childIdList;
    } function _GetChkParentNodes(node,propName,splitChar,orderBy) {                
        var pNode;
        var i=0;
        var s1 = new Array(); 
            
        s1[i]=_GetNodePropValue(node,propName);    
        pNode = node.getParentNode();
        
        while(!!pNode) {
            i++;
            s1[i]=_GetNodePropValue(pNode,propName);
            pNode = pNode.getParentNode();
        }
        
        if (orderBy=="desc")
        {
            var j=0;
            var s2 = new Array(); 
        
            for(i = s1.length; i >= 0; i--) {  
                s2[j] = s1[i];
                j++;
            }
            
            return s2.join(splitChar);    
        }
        
        return s1.join(splitChar);
    }