如何获取jstree JSON数据中的节点属性

时间:2016-04-23 03:48:16

标签: jquery json jstree

我想获取树中每个节点的属性。在线查看后,我找到了一种方法,但它不起作用。错误是(在attr(“description”)行:

Uncaught TypeError: Cannot read property 'obj' of undefined

这是我的代码:

jQuery(document).ready(function() {
    var $ = jQuery;
    $('#jstree').jstree({ 'core' : {
    'data' : [
       {"id":"parent","parent":"#","text":"parent"},
       {"id":"cs","text":"Short Stay","parent":"parent","li_attr":{"label":"Short Stay","description":"example"}},
       {"id":"ls","text":"ls","parent":"parent"},{"id":"cs_1","text":"cs_1","parent":"cs"},
       {"id":"ls_1","text":"ls_1","parent":"ls"},{"id":"cs_1_1","text":"cs_1_1","parent":"cs_1"},
       {"id":"cs_1_1_1","text":"cs_1_1_1","parent":"cs_1_1"},
       {"id":"cs_1_1_2","text":"cs_1_1_2","parent":"cs_1_1"}
    ]
} })
.on("select_node.jstree",
     function(evt, data){
          $('#data').html(data.rslt.obj.attr("description"));
     }
);
  });

1 个答案:

答案 0 :(得分:8)

您只需要获取所选元素的id,然后获取该元素的属性:

$(function () {
    $('#jstree').jstree({ 'core' : {
    'data' : [
       {"id":"parent","parent":"#","text":"parent"},
       {"id":"cs","text":"Short Stay","parent":"parent","li_attr":{"label":"Short Stay","description":"example"}},
       {"id":"ls","text":"ls","parent":"parent"},{"id":"cs_1","text":"cs_1","parent":"cs"},
       {"id":"ls_1","text":"ls_1","parent":"ls"},{"id":"cs_1_1","text":"cs_1_1","parent":"cs_1"},
       {"id":"cs_1_1_1","text":"cs_1_1_1","parent":"cs_1_1"},
       {"id":"cs_1_1_2","text":"cs_1_1_2","parent":"cs_1_1"}
    ]
} }).on("select_node.jstree",
     function(evt, data){
          var node_id   = (data.node.id); // element id
          var description = $("#"+node_id).attr("description"); // get value of element attribute
          $('#data').html(description);
     }
);
});

请注意,并非所有元素都具有description属性。

Fiddle