В jsTree, как получить информацию об узле по идентификатору узла?

В jsTree, как получить информацию об узле по идентификатору узла?

Я знаю идентификатор следующего узла, т.е. 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 :: имя_узла :: 1 :: имя_узла

Любая помощь или руководство в этом вопросе будут оценены


person StackOverFlow    schedule 30.04.2012    source источник
comment
+1 за вашу ручку :)   -  person Ε Г И І И О    schedule 10.07.2013


Ответы (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);
person Daniel Bidulock    schedule 30.04.2012
comment
Я счастлив, что смог тебе помочь. - person Daniel Bidulock; 01.05.2012

Просто хочу помочь сохранить ответ в актуальном состоянии. Используя 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 элемента дерева, поэтому они говорят, что им нужен объект node (который имеет свойство .original). В частности, вам это нужно для реализации таких функций, как «создание», когда вам нужно создать новый объект данных JSON с ParentID, для которого задан идентификатор родительского объекта данных JSON. Я искал 2 дня и не нашел ничего внятного в документации jstree, объясняющей это:

$.jstree.reference(treeMain).get_node(sNodeID);

простой звонок. В свою защиту, у них здесь есть пример из 1 строки:

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

но это пример, который большинству людей не будет интересен (пользователь будет выбирать узлы большую часть времени), и, конечно, неясно, на что он на самом деле способен. В любом случае... надеюсь, это поможет кому-то сэкономить пару дней. знак равно

person Frog Pr1nce    schedule 01.04.2015