You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JsTree如何获取选中根节点的所有子级及子同级节点ID?

解决jstree获取根节点下所有层级子节点ID的问题

我在用jstree绘制部门树形结构时遇到个问题:点击根节点时,现在的代码只能拿到它的直接子节点ID,但我需要获取这个根节点下所有层级的子节点ID。目前我的代码是这样的:

var currentNode = $("#jstree").jstree("get_selected");
var childrens = $("#jstree").jstree("get_children_dom", currentNode);
for (var i = 0; i < childrens.length; i++) {
    alert(childrens[i].id);
}

别发愁,jstree本身就有现成的方法帮你搞定这个需求,不用自己写递归遍历。下面给你两种简单可行的解决方案:

方案一:用get_descendants获取所有后代节点

这个方法会直接返回选中节点下所有层级的后代节点DOM对象,遍历它们就能轻松拿到每个节点的ID:

// 先拿到选中的单个根节点(get_selected返回数组,取第一个元素)
var currentNode = $("#jstree").jstree("get_selected")[0];
// 获取所有层级的后代节点
var allDescendants = $("#jstree").jstree("get_descendants", currentNode);
// 遍历拿到每个节点ID
allDescendants.forEach(function(node) {
    console.log(node.id); // 这里可以替换成你需要的操作,比如把ID存到数组里
});

方案二:直接用节点数据的children_d属性

如果你只需要所有子节点的ID集合,这个方法更高效——children_d属性本身就是选中节点下所有层级后代节点的ID数组:

// 获取选中节点的完整数据对象
var currentNodeData = $("#jstree").jstree("get_node", $("#jstree").jstree("get_selected")[0]);
// 直接拿到所有层级子节点的ID数组
var allChildrenIds = currentNodeData.children_d;
console.log(allChildrenIds); // 打印出来就是你要的所有ID啦

小提醒:get_selected返回的是一个数组,所以记得加[0]确保拿到单个选中的根节点,避免多选场景下出现异常哦。

内容的提问来源于stack exchange,提问作者Alazar Komar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:57:41