#javascript #jquery #jstree
#javascript #jquery #jstree
Вопрос:
У меня есть два вопроса относительно jsTree:
-
Я генерирую jsTree, используя JSON с struts2. В первый раз дерево отображается правильно. Но при нажатии кнопки я хочу перезагрузить это дерево с другими данными в тот же div. При нажатии кнопки я даю то же имя действия, которое присваивается при первом создании jstree.
-
Если я нажимаю на любой узел дерева, то мне нужен идентификатор этого узла, и если у этого узла есть какой-либо родительский узел, то также нужен идентификатор родительского узла этого узла, опять же родительский узел имеет parent, затем id этого родительского узла также
Пример
Parent 1
|__Parent 2
|__Child 1
Я нажимаю на дочерний элемент 1, затем мне нужен идентификатор дочернего элемента 1, родительского элемента 2, родительского элемента 1 и так далее.
Ответ №1:
Я не уверен, действительно ли вы просматривали документацию, но вот некоторые материалы, которые могли бы вам помочь :
для вашего первого вопроса вы можете использовать откат : http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/5_others.html Обновление тоже может быть опцией: http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/2_operations.html
Для вашего второго вопроса вы можете использовать обратные вызовы : http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/3_callbacks.html
._get_parent
вам тоже поможет :
._get_parent (узел)
Возвращает элемент LI, представляющий родительский элемент переданного узла. Возвращает false при сбое. смешанный узел
Это может быть узел DOM, узел jQuery или селектор, указывающий на элемент в дереве, родительский элемент которого мы хотим.
Смотрите полную документацию для получения более подробной информации: http://www.jstree.com/documentation/core
Ответ №2:
Если вы хотите получить полный путь к вашему узлу, вы можете использовать get_path
// The true means it will return the ID's of the parent, therefore ALL NODES need an ID
var parents = $("#your_jstree").jstree("get_path",$("#the_node"),true);
$.each(parents, function(k, v){
// Log down the ID's
console.log(v);
});
Полный пример
var ids = $(this).closest(".jstree").jstree("get_path", $(this), true);
var path = "";
$.each(ids, function (k, v) {
if (k == 0) return;
if (path != "")
path = "/";
path = clone.html();
});
Вернет / parent 1/parent 2/ Child 1