jstree判断是不是有下级节点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jstree判断是不是有下级节点相关的知识,希望对你有一定的参考价值。

有3种方法:

    用is_parent( node)方法, node传节点ID或节点对象, 有下级节点则返回true.

    用is_leaf(node)方法, 此方法表示是否为最末级, 刚好和is_parent相反.

    在事件中获取node对象, 其中node.child为包含所有直接子节点的数组, node.child.length === 0 则没有下级节点.

示例:

html

<div id="tree"></div>

javascript

var $tree = $('#tree');
$tree.jstree(
    core: 
        data: [
             id: '1', parent: '#', text: "1" ,
             id: '2', parent: '1', text: "11" ,
             id: '3', parent: '1', text: "12" ,
             id: '4', parent: '2', text: "111" 
        ]
    
);

$tree.on('ready.jstree', function () 
    //jQuery风格
    $tree.jstree('is_parent', '2'); //true
    $tree.jstree('is_leaf', '2'); //false
    
    //使用jstree实例对象操作
    var tree = $tree.jstree(true);
    tree.is_parent('4'); //false
    tree.is_leaf('4'); //true 
    
    //注意: jstree的初始化是一个异步过程, 如果上述代码没有放在初始化完成的事件中,将不会得到正确的结果,因为执行代码时,jstree还没生成.
);

//jstree事件中的应用
$tree.on('select_node.jstree', function (e, data) 
    var node = data.node;
    if(node.child.length > 0)
        console.log('此节点有下级节点');
        
    var tree = data.instance;
    if(tree.is_parent(node)) //这里无需tree.is_parent(node.id), is_parent方法可以node对象作为参数.
        console.log('此节点有下级节点');     
);

参考技术A 在DhtmlXtree中可以用tree.getLeafCount(itemId)获取节点下的子节点数,如果你想计算的是根节点下所有的子节点的话,可以先用上面的计算出根节点下的子节点数然后在有循环判断这些子节点中那个有孩子节点然后在根据tree.getLeafCount(itemId)计算此节点下的字节点数,依次循环直至最后。 参考技术B

get_children_dom(obj)看官方文档。

以上是关于jstree判断是不是有下级节点的主要内容,如果未能解决你的问题,请参考以下文章

jstree 如何获得选中节点的值?

jsTree:如何从 jstree 获取所有叶节点?

jsTree:如何从 jstree 获取所有节点?

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

双jsTree实现

jstree的增删改查