如何获取jsTree中所有选中节点的ID数组
jsTree获取所有选中节点ID数组的实现方案
jsTree的checkbox插件内置了专门的API用来获取选中节点,不需要手动遍历DOM节点,直接调用对应方法即可。
核心实现方法
使用get_selected实例方法,默认返回值就是所有选中节点的ID组成的数组:
// 主动调用获取选中ID数组 const selectedNodeIds = $('#SimpleJSTree').jstree('get_selected');
如果需要获取选中节点的完整数据对象(比如节点文本、自定义属性等),给方法传入true参数即可:
// 获取完整选中节点对象数组 const selectedNodes = $('#SimpleJSTree').jstree('get_selected', true); // 后续可以自行从节点对象提取需要的字段,比如拿文本:selectedNodes.map(node => node.text)
常用场景示例
如果你需要在节点选中状态变化时实时获取ID数组,可以绑定jsTree的changed.jstree事件,不需要额外写触发逻辑:
// 在createJSTree方法初始化jstree之后绑定事件即可 $('#SimpleJSTree').on('changed.jstree', function (e, data) { // 事件回调的data.selected直接就是最新的选中ID数组 const selectedIds = data.selected; console.log('当前选中ID:', selectedIds); // 这里可以写你后续处理数组的业务逻辑 });
注意事项
- 你当前代码里
core.multiple配置为false,是单选模式,返回的数组最多只会包含1个ID,如果需要支持多选请把该值改为true - 默认配置下勾选父节点会自动级联选中所有子节点,返回的数组会包含所有级联选中的子节点ID;如果不需要级联效果,可以在初始化配置的plugins同级添加checkbox配置:
"checkbox": { "three_state": false, // 取消三态(选中/未选中/半选)效果,不会级联选中子节点 "cascade": "" // 关闭级联 } - 被设置为
disabled: true的节点不会被计入选中结果,不需要额外过滤
内容的提问来源于stack exchange,提问作者Владимир Кузовкин
相关产品推荐
相关产品推荐

