通过单击父名称jsTree获取子节点

时间:2016-02-29 17:34:41

标签: javascript jquery json jstree

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

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

我添加了eventHandler,对于一些孩子,通过点击我得到了一些东西,如表,信息等。问题是,当我点击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 };
            }
        }
    }});

然后我在要合并的孩子上添加了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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我会这样做:

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' );    
        })

    }
}