开发者

jsTree: how to select node after refresh

开发者 https://www.devze.com 2023-03-13 00:57 出处:网络
I have a jQuery jsTree populated from the server via an ajax call.When I add a new nod开发者_运维知识库e I make an ajax call then make a call to refresh the tree with tree.jstree(\"refresh\").After th

I have a jQuery jsTree populated from the server via an ajax call. When I add a new nod开发者_运维知识库e I make an ajax call then make a call to refresh the tree with tree.jstree("refresh"). After the refresh I want to select the node I just added. Unfortunately there doesn't seem to be a callback that can be passed to this command. Is there any clean way to do this?


oh, such a long time since this post ... and still couldn't find an answer on internet. So after a few hours of ... no no no, not this, came up with a solutin

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);

// now lets say that you add a new node from server side, you get the new id of the created node by an ajax call, and next you want to refresh the tree in order to display it, and also select it

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];


$('#tree').jstree("select_node", '#1', true);
//other node are deselected if pass last argument as true.

$('#tree').jstree("select_node", '#1', false);
//other node are selected and new one also selected.
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号