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

时间:2012-04-30 20:28:44

标签: javascript jquery jquery-plugins jquery-selectors jstree

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

我知道跟随节点的id,即295然后如何获得完整的节点信息

<item id="295" parent_id="192" title="itemTitle"   version="1">    
            <content><name>Bhushan Sambhus</name></content>  
</item> 

上面渲染到jsTree的xml部分如下

    $("#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" ]
    });

跟随psudo代码

之类的东西
 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

任何有关此事的帮助或指导都将不胜感激

2 个答案:

答案 0 :(得分: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 :(得分:3)

只是想帮助保持最新的答案。使用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属性)。具体来说,你需要这个来实现像&#34;创建&#34;您需要使用ParentID创建新JSON数据对象的功能,该ParentID设置为父JSON数据对象的ID。我搜索了2天,并没有在jstree文档中找到解释清楚的内容:

$.jstree.reference(treeMain).get_node(sNodeID);
简单的电话。在他们的辩护中,他们确实有一个埋在这里的一行例子:

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

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