////////////////////////////////////////////////////////////////////
// @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
где добавить эту итерацию? любой обходной путь? образец кода ? – StackOverFlow
Я согласен с решением. Это можно вызывать из любой функции. Я бы изменил две вещи. 1) Какая потребность в substr (5) на идентификаторе. 2) Текст должен быть обрезан. $ ('. jstree-leaf'). each (function() { var id = $ (this) .attr ('id'); var text = $ (this) .children ('a'). text () .trim(); }); – MMeah
@MMeah Спасибо за ответ. Я также согласен с решением. эта итерация вернет весь листовой узел, присутствующий в jsTree. Я столкнулся с одной проблемой. Моя страница содержит 2 jsTree. tree1 и tree2. Я хочу только весь листовой узел дерева2. Как я могу это достичь? – StackOverFlow