ztree吧 关注:1,828贴子:12,474
  • 4回复贴,共1

一次性加载简单数据,没有设置open,根节点设置open为true失败

只看楼主收藏回复

菜鸟又来发问了,请各位大虾帮帮忙~
如题:一次性加载简单数据,没有open,默认就是不展开了。
现根据其中name为“叶子节点224”的节点,展开其所在的路径。我下面这样做没有成功。该节点的上一级目录是展开的,但根目录没有展开。

点击“父节点2”前面的 + ,第一遍点击,没有任何反应,第二遍点击,可以展开。里面的“父节点22”是已经展开的,也就是说根节点目录设置展开失败。

点击“父节点2”
<SCRIPT type="text/javascript">
<!--
var setting = {
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: 0
}
}
};
var zNodes =[
{ id:1, pId:0, name:"父节点1 - 展开"},
{ id:11, pId:1, name:"父节点11 - 折叠"},
{ id:111, pId:11, name:"叶子节点111"},
{ id:112, pId:11, name:"叶子节点112"},
{ id:113, pId:11, name:"叶子节点113"},
{ id:114, pId:11, name:"叶子节点114"},
{ id:12, pId:1, name:"父节点12 - 折叠"},
{ id:121, pId:12, name:"叶子节点121"},
{ id:122, pId:12, name:"叶子节点122"},
{ id:123, pId:12, name:"叶子节点123"},
{ id:124, pId:12, name:"叶子节点124"},
{ id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
{ id:2, pId:0, name:"父节点2 - 折叠"},
{ id:21, pId:2, name:"父节点21 - 展开"},
{ id:211, pId:21, name:"叶子节点211"},
{ id:212, pId:21, name:"叶子节点212"},
{ id:213, pId:21, name:"叶子节点213"},
{ id:214, pId:21, name:"叶子节点214"},
{ id:22, pId:2, name:"父节点22 - 折叠"},
{ id:221, pId:22, name:"叶子节点221"},
{ id:222, pId:22, name:"叶子节点222"},
{ id:223, pId:22, name:"叶子节点223"},
{ id:224, pId:22, name:"叶子节点224"},
{ id:23, pId:2, name:"父节点23 - 折叠"},
{ id:231, pId:23, name:"叶子节点231"},
{ id:232, pId:23, name:"叶子节点232"},
{ id:233, pId:23, name:"叶子节点233"},
{ id:234, pId:23, name:"叶子节点234"},
{ id:3, pId:0, name:"父节点3 - 没有子节点"}
];
function openNode(node){
if(node){
node.open= true;
if(node.parentTId != null){
openNode(node.getParentNode());
}
}
}
$(document).ready(function(){
treeObj=$.fn.zTree.init($("#treeDemo"), setting, zNodes);
var node = treeObj.getNodeByParam("name", "叶子节点224", null);
console.log(node.length);
openNode(node.getParentNode());
});
//-->
</SCRIPT>
请各位帮帮忙,跪谢 ...


IP属地:上海1楼2015-03-02 17:00回复
    楼主解决了这一问题,但是我用的很笨的解决方式。希望有大虾能告知一下,为何js设置根节点open为true是没有根节点展开的效果呢?
    在后台java没有给出节点open值的情况下,根据需要展开的叶子节点,找到其所有的根节点,用expandNode方法展开。
    <SCRIPT type="text/javascript">
    var openNodes = new Array();
    var setting = {
    data: {
    simpleData: {
    enable: true,
    idKey: "id",
    pIdKey: "pId",
    rootPId: 0
    }
    }
    };
    var zNodes =[
    { id:1, pId:0, name:"父节点1"},
    { id:11, pId:1, name:"父节点11"},
    { id:111, pId:11, name:"叶子节点111"},
    { id:112, pId:11, name:"叶子节点112"},
    { id:113, pId:11, name:"叶子节点113"},
    { id:114, pId:11, name:"叶子节点114"},
    { id:12, pId:1, name:"父节点12"},
    { id:121, pId:12, name:"叶子节点121"},
    { id:122, pId:12, name:"叶子节点122"},
    { id:123, pId:12, name:"叶子节点123"},
    { id:124, pId:12, name:"叶子节点124"},
    { id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
    { id:2, pId:0, name:"父节点2"},
    { id:21, pId:2, name:"父节点21"},
    { id:211, pId:21, name:"叶子节点211"},
    { id:212, pId:21, name:"叶子节点212"},
    { id:213, pId:21, name:"叶子节点213"},
    { id:214, pId:21, name:"叶子节点214"},
    { id:22, pId:2, name:"父节点22"},
    { id:221, pId:22, name:"叶子节点221"},
    { id:222, pId:22, name:"叶子节点222"},
    { id:223, pId:22, name:"叶子节点223"},
    { id:224, pId:22, name:"叶子节点224"},
    { id:23, pId:2, name:"父节点23"},
    { id:231, pId:23, name:"叶子节点231"},
    { id:232, pId:23, name:"叶子节点232"},
    { id:233, pId:23, name:"叶子节点233"},
    { id:234, pId:23, name:"叶子节点234"},
    { id:3, pId:0, name:"父节点3 - 没有子节点"}
    ];
    function findOpenNodes(node){
    if(node){
    openNodes.push(node);
    findOpenNodes(node.getParentNode());
    }
    }
    $(document).ready(function(){
    treeObj=$.fn.zTree.init($("#treeDemo"), setting, zNodes);
    var node = treeObj.getNodeByParam("name", "叶子节点224", null);
    findOpenNodes(node.getParentNode());
    for(var i=0;i<openNodes.length;i++){
    treeObj.expandNode(openNodes[i],true,false,false);
    }
    });
    </SCRIPT>


    IP属地:上海2楼2015-03-11 19:58
    回复
      2026-01-20 04:50:07
      广告
      不感兴趣
      开通SVIP免广告
      expandNode 方法展开 某个节点时, 他所有的父节点都会被展开的呀!!!! 不需要你自己去找他所有的父节点出来一个个展开的!!!!!


      3楼2015-03-12 21:54
      收起回复
        实际操作后,分享一个小注意点。
        如果找到的是某叶子节点,那么用expandNode 打开其“父节点”,则所有的父节点至跟节点就都打开了。直接打开叶子节点是没有用的。


        IP属地:上海4楼2015-03-17 11:26
        回复