我有一个用以下代码创建的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
),但结构没有改变。我怎样才能做到这一点?谢谢!
答案 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)
$('#YourJSTREE').jstree("destroy").empty();
$('#YourJSTREE').jstree(true).refresh();