单击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 的行处出现错误。 我尝试过各种各样的事情没有快乐,真的很感激一些帮助。 我做错了什么?

我很

确定你在那行上出现错误的原因是因为你的语法在这一行有点不对劲:

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

试试这个:

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

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

.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("#tree").destroy();我知道这可能看起来很浪费,但无论如何您都在替换根节点。

最新更新