jsTree:如何从 jstree 获取所有叶节点?
Posted
技术标签:
【中文标题】jsTree:如何从 jstree 获取所有叶节点?【英文标题】:jsTree : How to get all leaf nodes from jstree? 【发布时间】:2012-05-04 20:25:40 【问题描述】:我想从 jsTree 获取所有叶节点(节点 ID 和文本)?
我没有使用复选框 ui:jsTree。
Root
-----A
-----A1
-----A1.1
-----A2
-----A2.1
-----B
-----B2
-----C
-----C1
-----C1.1
我想要来自 jsTree 的叶节点列表。
预期输出:[A1.1,A2.1,B2,C1.1]
在此问题上的任何帮助或指导将不胜感激。
【问题讨论】:
【参考方案1】:这样的?
$('.jstree-leaf').each(function()
var id = $(this).attr('id');
var text = $(this).children('a').text();
);
【讨论】:
我同意这个解决方案。这可以从任何函数调用。我会改变两件事。 1)ID上有什么需要substr(5)。 2)文本应该被修剪。 $('.jstree-leaf').each(function() var id = $(this).attr('id'); var text = $(this).children('a').text().修剪();); @MMeah 感谢您的回复。我也同意解决方案。此迭代将返回 jsTree 中存在的所有叶节点。我面临1个问题。我的页面包含 2 个 jsTree。树 1 和树 2。我只想要tree2的所有叶子节点。我怎样才能做到这一点? @Iddo 我的页面包含 2 个 jsTree。树 1 和树 2。我只想要tree2的所有叶子节点。我怎样才能做到这一点? @VaibhaV 与单个树交谈,它们必须是可区分的。给他们 id="tree1" 和 id="tree2",然后为他们创建一个选择器。 $('#tree2 .jstree-leaf').each... @MMeah 你能帮我解决这个问题吗***.com/questions/10223212/dual-jstree-implementation【参考方案2】:////////////////////////////////////////////////////////////////////
// @name :
// @description : function
// @params :
// @return :
////////////////////////////////////////////////////////////////////
function jstreeIterateNodes(
treeOwner ,
node ,
fnCallbackCondition ,
bRecursive ,
arrCollector
)
var
childNodes = node.children ,
arrCollector = ( arrCollector ) ? arrCollector : [] ,
bUseCallback = ( typeof fnCallbackCondition === "function" ) ? true : false ,
nodeItreator = null;
for(
var i = 0;
i < childNodes.length;
++i
)
nodeItreator = treeOwner.get_node( childNodes[i] );
if( bUseCallback )
if( fnCallbackCondition( nodeItreator , node ) )
arrCollector.push(
node : nodeItreator,
parent : node
);
if( bRecursive )
jstreeIterateNodes(
treeOwner ,
nodeItreator ,
fnCallbackCondition ,
arrCollector
);
return arrCollector;
var
_your_jstree_ = $("#YOUR_TREE_ELEMENT").jstree( true ) ,
bRecursiveItreation = false , // could be true for recursive
arrCollected = null;
arrCollected = jstreeIterateNodes(
_your_jstree_ ,
_your_jstree_.get_node( "some_node_id" ) ,
function _your_filter_callback_( itrated_node , parent_itrated_node )
// Do what ever and return true to collect
,
bRecursiveItreation
);
// DO SOMTHING WITH arrCollected which contains all collected nodes
【讨论】:
你能添加一段解释你的代码吗?以上是关于jsTree:如何从 jstree 获取所有叶节点?的主要内容,如果未能解决你的问题,请参考以下文章