在 jsTree 中,如何通过节点 id 获取节点信息?
Posted
技术标签:
【中文标题】在 jsTree 中,如何通过节点 id 获取节点信息?【英文标题】:In jsTree , How to get Node information by node id? 【发布时间】:2012-05-10 12:49:33 【问题描述】:在jsTree中,如何通过node id获取Node信息?
我知道以下节点的 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
在此问题上的任何帮助或指导将不胜感激
【问题讨论】:
你的句柄 +1 :) 【参考方案1】:只是想帮助更新答案。使用 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
我在 *** 上看到了这个问题的几个答案,它们都在谈论返回到树项的 DOM 对象。我敢打赌,大多数问这个问题的人真的想回到树项的底层 JSON 数据对象,这就是为什么他们说他们想要节点对象(具有 .original 属性)。具体来说,您需要它来实现诸如“创建”功能之类的东西,您需要创建一个新的 JSON 数据对象,其 ParentID 设置为父 JSON 数据对象的 ID。我搜索了 2 天,并没有在 jstree 文档中找到任何明确的解释:
$.jstree.reference(treeMain).get_node(sNodeID);
简单的调用。在他们的辩护中,他们确实有一个 1 行示例:
http://www.jstree.com/docs/interaction/
但这是一个大多数人不会关心的例子(用户大部分时间都在选择节点),当然也不清楚它实际上能做什么。无论如何...希望这有助于节省其他人几天的时间。 =)
【讨论】:
【参考方案2】:如果我正确理解您的问题,您可以像这样完成您想做的事情:
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);
【讨论】:
很高兴能帮到你。以上是关于在 jsTree 中,如何通过节点 id 获取节点信息?的主要内容,如果未能解决你的问题,请参考以下文章