3

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

我是一个 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 的行处出现错误。我已经尝试了各种没有快乐的事情,并且非常感谢一些帮助。我究竟做错了什么?

4

2 回答 2

3

我很确定您在该行收到错误的原因是因为您在该行中的语法有点偏离:

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

试试这个:

$('#tree').jstree("refresh", data.inst.get_selected());
于 2012-04-17T19:51:35.460 回答
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("#tree").destroy(); 我知道这可能看起来很浪费,但无论如何你都在替换根节点。

于 2012-04-17T23:35:42.087 回答