通过单击 parent 名称 jsTree 获取 child 节点

Get child node by click on parent name jsTree

我正在通过 Json 文件获取我的树,它看起来像

root > parent1 > parent > child1 : child2 : child3 : etc

我已经添加了 eventHandler 和一些 children,通过点击我得到了一些东西,比如表格、信息等等。问题是当我点击 child1 时,我想要从其他 json 文件中添加一个树分支。我从 jsTree 文档中拿了例子

$('#tree').jstree({
'core' : {
  'data' : {
    'url' : function (node) {
      return node.id === '#' ?
        'ajax_roots.json' :
        'ajax_children.json';
    },
    'data' : function (node) {
      return { 'id' : node.id };
    }
  }
});

并将其设置为我的代码...

var $industry = $('#industry');
$industry.jstree({
    "core" : {
        "animation" : 0,
        "check_callback" : true,
        "themes" : {
            "dot": true,
            "stripes" : true,
            "responsive": false
        },
        'data' : {
            'url' : function (node) {
                return node.id === '#' ?
                    'data/industry.json' :
                    'data/SDTM.json';
            },
            'data' : function (node) {
                return { 'id' : node.id };
            }
        }
    }});

然后我在 child 上添加了我要合并的 eventHandler

 // ===== Click event on node =====
    for(var i = 0; i < data.selected.length; i++) {
        var node = data.instance.get_node(data.selected[i]).text;
        if (node == "SDTM 3.1.1"){
            //console.log(node);
            $.jstree._reference($industry)
                .create_node(
                    'select_node.jstree', 'after',
                    { state: 'open', data: 'data/SDTM.json' }
                );        }
    }
})
.jstree();

并且在控制台中出现下一个错误

Uncaught TypeError: $.jstree._reference is not a function

我做错了什么?

我会这样做:

for (var i = 0; i < data.selected.length; i++) {
    var node = data.instance.get_node(data.selected[i]),
        nodeText = node.text;

    if (nodeText == "SDTM 3.1.1") {
        //console.log(node);

        // get data for the branch, need to write code here
        var branchJson = ... data/SDTM.json
        /*
        branchJson should contain an array of objects,
        each object may have keys like below

        {
            text        : 'Node text'
            children    : [...],
            state       : { 'open' }
        }

        */

        // iterate nodes in received json
        branchJson.forEach( function(obj) {
            data.instance.create_node( node, obj, 'after' );    
        })

    }
}