单击jstree节点,以该节点为根重建树

时间:2012-04-17 15:46:39

标签: javascript jquery tree jstree

我认为这个问题相当清楚。 :)

我是一个jstree新手,并试图解析文档,但我得到了 有点困惑这一个。我有以下代码:

$("#tree").jstree({
   "json_data" : {
       "data" : [
           tree.company
       ]
   },
   "themes" : {
       "theme" : "smb",
       "dots" : false,
       "icons" : true
   },
   "plugins" : [ "themes", "json_data", "ui" ]
}).bind("select_node.jstree", function (event, data) {
   $('#tree').jstree.refresh(data.inst.get_selected());  // FIXME
});

树加载并显示得很好,但是当我点击节点时 我希望成为显示的树的新根,我得到了一个 标记为FIXME的行的错误。我尝试过各种各样的事情 没有快乐,真的很感激一些帮助。我做错了什么?

2 个答案:

答案 0 :(得分:3)

我很确定你在这一行上收到错误的原因是因为你在这一行中的语法略有不同:

$('#tree').jstree.refresh(data.inst.get_selected());

请改为尝试:

$('#tree').jstree("refresh", data.inst.get_selected());

答案 1 :(得分:2)

如果需要刷新整个树,则可以引用和刷新树的容器。

.bind("select_node.jstree", function (event, data) {
    $.jstree._reference(data.inst.get_container()).refresh(); //(data.inst.get_selected());  // FIXME
}).bind("refresh.jstree", function (event, data) {
    alert("Refreshed!");
});

如果只需要在select_node中引用该节点:     data.rslt.obj [0];

或另一轮关于如何获得它(与上面相同的节点):     $ .jstree._reference(data.inst.get_container())get_selected();

您可能还需要销毁和重建树:  $ .jstree._reference( “#树”)destroy()方法。 我知道这看起来很浪费,但无论如何你都要替换根节点。