jsTree:刷新后如何选择节点

Gle*_*len 4 javascript jquery jstree

我有一个通过 ajax 调用从服务器填充的 jQuery jsTree。当我添加一个新节点时,我会进行 ajax 调用,然后调用 来刷新树tree.jstree("refresh")。刷新后我想选择刚刚添加的节点。不幸的是,似乎没有可以传递给此命令的回调。有什么干净的方法可以做到这一点吗?

Adi*_*Adi 5

哦,自从这篇文章发布以来已经很久了......但仍然无法在互联网上找到答案。所以经过几个小时......不不不,不是这个,想出了一个解决方案

var jsTreeId = '#jstree'; // or whatever name the jstree has
var jsTreeSelectedItemId = 5; // just an example
var selectedNode = $('#node_'+jsTreeSelectedItemId);
var parentNode = $.jstree._reference(jsTreeId)._get_parent(selectedNode);
Run Code Online (Sandbox Code Playgroud)

// 现在假设您从服务器端添加了一个新节点,您通过 ajax 调用获取了创建的节点的新 id,接下来您想要刷新树以显示它,并选择它

var newSelectId = 9; // or from ajax call
// call the refresh function, which is asnyc
$.jstree._reference(jsTreeId).refresh(parentNode); 
 // set the magic "to_select" variable with an array of node ids to be selected
// note: this must be set after refresh is called, otherwise won't work
$.jstree._reference(jsTreeId).data.ui.to_select = ['#node_'+newSelectId];
Run Code Online (Sandbox Code Playgroud)