首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jstree jquery如何遍历所有节点

问jstree jquery如何遍历所有节点
EN

Stack Overflow用户
提问于 2016-01-27 16:57:40
回答 5查看 18.9K关注 0票数 18

我试图在jstree中遍历treeview中的每个节点。树视图有4层深,但我似乎无法越过第1层。下面是用于迭代的jQuery。

代码语言:javascript
复制
$("#myTree").bind('ready.jstree', function (event, data) {
    $('#myTree li').each(function () {
        // Perform logic here
        }
    });
});

这里是一个用来说明我观点的摆设。请帮助我如何迭代jstree中的每个节点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-01-27 17:29:54

这将在一个平面数组中为您的.each循环获取树的所有子级。

代码语言:javascript
复制
$("#tree").bind('ready.jstree', function(event, data) {
  var $tree = $(this);
  $($tree.jstree().get_json($tree, {
      flat: true
    }))
    .each(function(index, value) {
      var node = $("#tree").jstree().get_node(this.id);
      var lvl = node.parents.length;
      var idx = index;
      console.log('node index = ' + idx + ' level = ' + lvl);
    });
});

JSFiddle - json

票数 24
EN

Stack Overflow用户

发布于 2016-01-27 17:34:34

另一种方法是在尝试访问dom中的节点之前打开它们,然后关闭它们:

代码语言:javascript
复制
$("#tree").bind('ready.jstree', function (event, data) {
  $(this).jstree().open_all(); // open all nodes so they are visible in dom
    $('#tree li').each(function (index,value) {
        var node = $("#tree").jstree().get_node(this.id);
        var lvl = node.parents.length;
        var idx = index;
        console.log('node index = ' + idx + ' level = ' + lvl);
    });
    $(this).jstree().close_all(); // close all again
});
票数 8
EN

Stack Overflow用户

发布于 2016-03-12 15:45:54

“节点”是一个过载的术语。您指的是HTML节点还是仅用于定义jstree中每个节点的JSON数据?我需要迭代jstree,以便提取每个jstree节点中ID字段的值。如果这是您所需要的,那么有一个更简单的方法:

代码语言:javascript
复制
var v =$("#tree").jstree(true).get_json('#', {'flat': true});
for (i = 0; i < v.length && i < 10; i++) {
    var z = v[i];
    alert("z[id] = " + z["id"]);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35043488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档