jtree:通过Id获取节点并创建子节点

jsTree: Getting a node by Id and creating a child

本文关键字:创建 子节点 节点 获取 通过 Id jtree      更新时间:2023-09-26

我在web上的几个地方发现了jsTree创建/get_node函数,但无法使此工作。当用户单击按钮时,我需要使用其Id获取父节点并创建子节点(参见jsfiddle)。这段代码有什么问题?

这是HTML:

<form>
<input value="Create Child" type="button" onclick="createChild();" />
</form>
<div id="treediv" />

这是javascript:

        var sqltree = [
             { "data" : "Node1", "metadata": { "id" : "id1" } , "attr":{"rel":"rel1"} },
             { "data" : "Node2", "metadata": { "id" : "id2" }, "attr":{"rel":"rel2"} },
             { "data" : "Node3", "metadata": { "id" : "id3" }, "attr":{"rel":"rel3"} }
         ];

        $("#treediv").jstree({
            "json_data" : { "data" : sqltree },
            "plugins" : [ "json_data", "ui", "crrm", "types" ]
        });


      function createChild(){
             alert ('createChild invoked');
             var newNode = { data: "Child1" };
             var parentNode = $('#treediv').get_node("[id='id2']"); 
             $("#treediv").jstree("create",parentNode,"first",newNode,false,true);
         }

如果引用jtree实例:

treeInst = $('#treediv').jstree()      # create new instance 
treeInst = $('#treediv').jstree(true)  # get existing instance

然后你可以通过它的id得到一个节点:

node = treeInst.get_node( node_id )

变化:

var parentNode = $('#treediv').get_node("[id='id2']"); 

:

var parentNode = $('#treediv').find("[id='id2']");