jstree预选节点并打开所有需要的父母

时间:2011-12-12 14:43:11

标签: jstree

我使用Jstree 1.0RC3并且没有让它工作以选择一个节点并让树打开以便该节点可见。 我的代码是这样的:

.jstree({ 
    // List of active plugins
    "plugins" : [ 
        "themes","json_data","ui","crrm","dnd","search","types","hotkeys","contextmenu" 
                    //"themes","json_data","ui","crrm","cookies","dnd","types","hotkeys"
    ],

    "json_data" : { 
        "ajax" : {
            "url" : $path + "/server.php",
            "data" : function (n) { 

                return { 
                    "operation" : "get_children",
                    "id" : n.attr ? n.attr("id").replace("node_","") : <?php echo($jstree_root); ?>


                };
            }
        }
    }, 

    },
"core" : { 
        // just open those two nodes up
        // as this is an AJAX enabled tree, both will be downloaded from the server
        "initially_open" : [ <?php echo($jstree_root_node); ?> ] 

UI插件为空。 php echo($ jstree_root_node)打开根目录下的第一个层级,以便更好地进行概述。有时我想传递应该选择的节点的ID。默认情况下,通过打开树,此节点并不总是可见。我看到的是,如果节点在第一层级中可见,则将选择该节点。如果它更深,则不会被选中。

我在论坛中发现在JSTREE调用之前使用它,但它不起作用:

        .bind("reopen.jstree", function () {
      $("#demo").jstree("select_node", "#node_1637");
      $("#node_1637").parents(".jstree-closed").each(function () {
            $("#demo").jstree("open_node", this, false, true);
      });
    })

关于这个的任何想法?它似乎是在我的鼻子前面,但我没有看到它......

gb5256

2 个答案:

答案 0 :(得分:3)

我认为有两种方法可以处理它。

第一个选项 - 使用&#34; initial_open&#34;您需要指定从根到选定节点的所有节点。 jsTree将完成此序列,打开每个节点,加载它的内容,打开下一个节点,加载它的内容等。

脚本的一些基本概念:

"core" : { 
        "initially_open" : [ < ?php echo implode(',', $path_to_node) ?> ] 
}

第二个选项 - 使用&#34;搜索&#34;插件你需要创建一个将由ajax请求调用的PHP脚本,并应返回搜索节点的路径。 所以你定义搜索插件:

      'search' : {
          'case_insensitive' : true,
          'ajax' : {
              'url' : 'search_script.php',
              'data' : function(n) {
                  return { search_id : n };
              }
          }
      },

然后在加载树后绑定搜索操作:

    $('#tree').bind('loaded.jstree', function(e, data){  
          $('#tree').jstree('search', <?php echo($jstree_searched_node); ?>); 
    });        

search_script.php应该以与第一个选项相同的方式返回要打开的节点键数组。

它不是完整的复制和粘贴解决方案,但我希望这会带您以正确的方式成功完成它。

答案 1 :(得分:-1)

您可以使用open_all打开所有可用节点。

$( “#TreeID”)jstree( 'open_all');