获取某个级别的所有节点JsTree Jquery

时间:2015-03-13 05:33:37

标签: jquery jstree

如何使用jquery获取特定级别的所有节点并为这些节点执行操作?我有一个jstree,我用json数据填充,因此无法为每个节点级别添加我自己的id。

例如,我想让所有节点都达到3级:

Root
    A1
      1
      2
      3

数字1,2和3将是3级节点。我想更改3级节点的图标。现在我可以用以下内容更改所有节点图标:

a>.jstree-icon
        {
            background-image: url("content/img/usersmallclipart.png")!important;
            background-position: 0!important;

        }

我想使用jquery来获取级别3的所有节点,如果满足某个上下文,则使用.css()来更改图标(这就是为什么我需要使用jquery而不是简单地使用我的css风格)。

所以伪代码如下:

  1. 获取第3级的所有节点

  2. 如果一个节点有孩子 - 改变它的图标,否则 - 什么都不做

  3. 我该怎么做? 感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:4)

加载树视图后,您可以使用jQuery迭代每个节点并根据节点的级别应用您的css。例如,一旦jstree加载树视图,您可以尝试以下操作:

$("#myTree").bind('ready.jstree', function (event, data) {
    var $tree = $(this);
    $($tree.jstree().get_json($tree, {
        flat: true
    })).each(function () {
        // Get the level of the node
        var level = $("#myTree").jstree().get_node(this.id).parents.length;
        var node;
        if (level == 3) {
            // node = ... apply desired css to the node here if it has children.
        }
    });
});

答案 1 :(得分:0)

使用css *

的通配符选择器
.root *  { color: blue } /* first level */
.root * *  { color: red } /* second level */
.root * * * { color: yellow } /* third level */
.root * * * * { color: green } /* fourth level */