如何在不重新加载的情况下更新jstree节点值

时间:2014-10-23 16:36:29

标签: jstree

我有一个用以下代码创建的jstree:

$('#mytree').jstree({"core": { "data" : value
                             , "themes" : { "dots": false
                                          , "icons": false }
                             }
                    }
                   );

我可以通过以下代码使用新数据重建它:

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();

但是当你拥有大量节点时它会很昂贵。我想要实现的是我想更新元素的值(即node.text部分)而不重建整个树。我在一条消息中通过websocket获取新值(完整的JSON字符串将是new_data),但结构没有改变。我怎样才能做到这一点?谢谢!

7 个答案:

答案 0 :(得分:21)

您需要的不是refresh()而是redraw()因此代码是

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).redraw(true);

您可以在jstree API

中找到这些功能

根据zmirc的建议,在v3.1中使用:

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();

答案 1 :(得分:2)

用于删除节点并重新加载树

 $('#mytree').jstree(true).refresh();

对于那些需要重新绘制而不重新启动树的人

jQuery('#data').jstree(true).refresh(true);

答案 2 :(得分:2)

为我工作:$('#structureRows')。jstree(“ destroy”)。empty();

function CreateStructureTree(jsonData)
        {
            $('#structureRows').jstree("destroy").empty(); 
            $('#structureRows').jstree
                ({
                    'core' : {
                        'data':
                            [

                                jsonData,
                                {
                                'id' : 'node_2',
                                'text' : 'Root node with options',
                                'state' : { 'opened' : true, 'selected' : true },
                                'children' : [ { 'text' : 'Child 1' }, 'Child 2']
                                }
                            ]

                     }
                });

            }

答案 3 :(得分:0)

$('#mytree&#39)。jstree(真).REFRESH(); 正在工作,但在我的情况下,它会导致线程泄漏。 每次刷新都会增加一个线程

答案 4 :(得分:0)

您可以以此刷新节点

$('#treeView').jstree(true).refresh_node("node_id_here")

答案 5 :(得分:0)

我通过url加载数据,所以我的刷新部分看起来像:

$('#groupTree').jstree(true).settings.core.data.url = get_group_url();

答案 6 :(得分:-1)

  1. $('#YourJSTREE').jstree("destroy").empty();
  2. 设置新数据
  3. $('#YourJSTREE').jstree(true).refresh();