Я бы порекомендовал более простой подход - похоже, что вы пытаетесь найти все выбранные узлы, помещаете их в array
, затем выполняете итерацию по всему jsTree и скрываете все узлы не в array
, который вы создали. Вместо этого используйте CSS-классы, которые jsTree уже применяет к выбранным узлам, и просто скройте все те, у которых его нет.
Упрощенный JS:
$('button[name="psychTree-selected"]').click(function() {
$('#psychTree li.jqtree_common').each(function(index,elem){
if(!$(elem).hasClass('jqtree-folder') && !$(elem).hasClass('jqtree-selected')){
$(elem).hide();
}
});
})
По-прежнему срабатывает при нажатии кнопки, но теперь он перебирает все узлы дерева и скрывает все, которые (1) не выбраны и (2) не являются родительскими / папочными узлами.
Рабочая JSFiddle: http://jsfiddle.net/tbwjau5m/