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 :: node_name :: 1 :: node_name

对此问题的任何帮助或指导将不胜感激

4

2 回答 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);
于 2012-04-30T20:41:58.717 回答
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);

简单的调用。在他们的辩护中,他们确实有一个 1 行示例埋在这里:

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

但这是一个大多数人不会关心的例子(用户大部分时间都会选择节点),当然也不清楚它实际上能做什么。无论如何...希望这有助于节省其他人几天的时间。=)

于 2015-04-01T12:54:54.583 回答