在 jsTree 中,如何通过节点 ID 获取节点信息?

5
在 jsTree 中,如何通过节点ID获取节点信息?
我知道以下节点的 ID 是 295,那么如何获取完整的节点信息?
<item id="295" parent_id="192" title="itemTitle"   version="1">    
            <content><name>Bhushan Sambhus</name></content>  
</item> 

上面的XML部分通过jsTree呈现如下:
    $("#treeViewDiv").jstree({ 
        "xml_data" : {
            "data" : "" + 
"<root>" + 
    "<item id="295" parent_id="192" title="itemTitle"   version="1">"+    
            "<content><name>Bhushan Sambhus</name></content>  "+
     "</item>"
        }
        "plugins" : [ "themes", "xml_data","ui" ]
    });

类似以下伪代码:

 function getNodeByNodeID(node_id){
          // some code
          // $.jstree.get_node ...... etc ?
          // 
           return relatedNodeInformation;
        }




var nodeInfo =  getNodeByNodeID(providedNodeID) // psudo code
      // any api in jstree to get nodeInfo by  providedNodeID?


       var parent_id_value = nodInfo.attr("parent_id");    
       var title_value     = nodInfo.attr("title");    
       var version_value   = nodInfo.attr("version");
       var node_name       = nodInfo.children("a").text()
alert(parent_id_value+" :: "+title_value+" :: "+version_value+" :: "+node_name);

输入:295

输出:192 :: 节点名称 :: 1 :: 节点名称

如果有任何帮助或指导,将不胜感激。

2个回答

9
如果我理解你的问题正确,你可以按照以下方式完成你想要做的事情:
var nodInfo = $("#" + providedNodeId);

var parent_id_value = nodInfo.attr("parent_id");    
var title_value     = nodInfo.attr("title");    
var version_value   = nodInfo.attr("version");
var node_name       = nodInfo.children("a").text();

alert(parent_id_value+" :: "+title_value+" :: "+version_value+" :: "+node_name);

1
我很高兴能够帮助你。 - Daniel Bidulock

5

我希望能够帮助更新答案。使用 jstree 3.1.0 版本,可以通过以下代码获取节点对象(而不是 DOM 对象):

var treeMain;  // reference holder

$(document).ready( function () {           // when the DOM is ready
     treeMain = $('#treeMenus').jstree();  // create the tree and get the reference
});

function getNode( sNodeID)
{
    return $.jstree.reference(treeMain).get_node(sNodeID);  // use the tree reference to fetch a node
}

我在StackOverflow上看到了几个回答这个问题的答案,它们都谈到了如何返回树形项的DOM对象。我敢打赌,大多数人问这个问题实际上是想要返回树形项的底层JSON数据对象,这就是为什么他们说他们想要节点对象(它具有.original属性)。具体来说,在实现“创建”功能时需要此操作,您需要创建一个新的JSON数据对象,并将其ParentID设置为父JSON数据对象的ID。我搜索了2天,没有在jstree文档中找到任何清晰解释这一点的内容。
$.jstree.reference(treeMain).get_node(sNodeID);

简单的调用。为了辩护,他们确实在这里埋藏了一个一行示例:

http://www.jstree.com/docs/interaction/

但是这个示例大多数人不会关心(用户大部分时间将选择节点),而且肯定不清楚它实际上能够做什么。总之...希望这个帮助节省其他人几天的时间。 =)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接