#javascript #jquery #jstree
#javascript #jquery #jstree
Вопрос:
У меня есть jsTree jQuery, заполняемый с сервера с помощью вызова ajax. Когда я добавляю новый узел, я выполняю вызов ajax, а затем выполняю вызов для обновления дерева с помощью tree.jstree("refresh")
. После обновления я хочу выбрать узел, который я только что добавил. К сожалению, похоже, что нет обратного вызова, который можно было бы передать этой команде. Есть ли какой-нибудь чистый способ сделать это?
Комментарии:
1. вы добавляете узел в качестве последнего узла или промежуточного дерева?
Ответ №1:
о, столько времени прошло с этого поста … и все еще не смог найти ответ в Интернете. Итак, после нескольких часов … нет, нет, не это, придумал решение
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);
// теперь допустим, что вы добавляете новый узел со стороны сервера, вы получаете новый идентификатор созданного узла с помощью вызова ajax, и затем вы хотите обновить дерево, чтобы отобразить его, а также выбрать его
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];
Ответ №2:
$('#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.