JsTree: Как получить идентификаторы выбранных узлов в root node в jsTree?

Как получить идентификаторы выбранных узлов в root node в jsTree?

Предположим, что C выбрано node, тогда как я могу получить все родительские идентификаторы C.

А

  • В

    • С

      + С1

      + c2

Следующий код вернет только исходный идентификатор родителя: Если я выбрал C, тогда я получаю только B

 .bind("select_node.jstree", function (event, data) {  
    //`data.rslt.obj` is the jquery extended node that was clicked          
    alert("Selected node = "+ data.rslt.obj.attr("id"));
    alert("Parent of Selected node = "+ data.inst._get_parent(data.rslt.obj).attr("id"))
 });

Вывод:

Selected node = C

Parent of Selected node = B

Есть ли способ получить идентификатор всех родительских узлов i.e. Выбранный node для root node?

  • Как получить все дочерние узлы выбранного node в jsTree?

Любая помощь или руководство в этом вопросе будут оценены.

Ответ 1

Используйте parents в jQuery, чтобы получить всех родителей, отфильтровывая li, потому что все элементы дерева li в jstree, попробуйте следующее:

var parents = data.rslt.obj.parents("li");

И для детей используйте children в jQuery, например:

var children = data.rslt.obj.parent().find('li');

РЕДАКТИРОВАТЬ Используя вышеизложенное, здесь, как получить все родительские и дочерние элементы и поместить их во все массивы для каждого:

Родители:

var parents = [];
data.rslt.obj.parents("li").each(function () {
    parents.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
});

Дети:

var children = [];
data.rslt.obj.find("li").each(function () {
    children.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
});

Ответ 2

1 Более простое решение

 .get_path ( node , id_mode )

возвращает путь к node, либо как массив идентификаторов, либо как массив из имен node. mixed node: это может быть DOM node, jQuery node или селектор, указывающий на элемент внутри дерева, путь которого мы хотим. bool id_mode: если вместо идентификаторов родителей возвращаются истинные идентификаторы, Значение по умолчанию - false.

// To get path [ID or Name] from root node to selected node 

var ids = data.inst.get_path('#' + data.rslt.obj.attr('id'),true);

// Returns IDs from root to selected node

var names = data.inst.get_path('#' + data.rslt.obj.attr('id'),false); 

// Returns Name from root to selected node 

alert("Path [ID or Name] from root node to selected node = ID = "+ids+" :: Name = "+names);

Ответ 3

Ты можешь попробовать

data.instance.get_path(data.node,'/',true)