12

如何在jsTree中获取选定节点的ID到根节点?

假设 C 是选定的节点,那么如何获取 C 的所有父 ID。

一种

    • C

      +C1

      +c2

以下代码将仅返回直接父 ID:如果我选择了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

有没有办法让所有父节点 ID 即选定节点到根节点?

  • 如何获取 jsTree 中选定节点的所有子节点?

在此问题上的任何帮助或指导将不胜感激。

4

2 回答 2

16

在 jQuery 中使用parents来获取所有父母,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() });
});
于 2012-04-13T12:10:39.260 回答
11

1 更简单的解决方案

 .get_path ( node , id_mode )

以 ID 数组或节点名称数组的形式返回节点的路径。混合节点:这可以是 DOM 节点、jQuery 节点或指向树中的元素的选择器,我们想要其路径。bool id_mode :如果设置为 true,则返回 ID 而不是父节点的名称。默认为假。

// 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's from root to selected node 

alert("Path [ID or Name] from root node to selected node = ID's = "+ids+" :: Name's = "+names);
于 2012-04-24T06:38:11.300 回答