JsTree: Как получить идентификаторы выбранных узлов в root node в jsTree?
Как получить идентификаторы выбранных узлов в root node в jsTree?
Предположим, что C выбрано node, тогда как я могу получить все родительские идентификаторы C.
А
Следующий код вернет только исходный идентификатор родителя:
Если я выбрал 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)