jsTreeノード選択イベントのdata引数

以前、
oboe2uran.hatenablog.com

を書きましたが、
この時、選択配下のノードツリーを配列JSONで取得する処理
on メソッドで、select_node.jstree でイベントと結合して

$('#tree').jstree({
'core':{
   data':{
         "url":"./tree.json",
         "dataType":"json"
      },
}).on('select_node.jstree', function(e, data){
    var selectedAry = $('#tree').jstree(true).get_json(data.node.id, {flat:true});
   
});

と書いて、

    var selectedAry = $('#tree').jstree(true).get_json(data.node.id, {flat:true});

$('#tree')と書くのがあまりよくないと思ってました。

jsTreeノード選択イベントの data 引数のinstance 属性が、
jsTreeオブジェクトそのもののはずです。
よって、以下のように書けるはずです。

}).on('select_node.jstree', function(e, data){
   var ary = data.instance.get_json(data.node.id, {flat:true});
   
   $.each(ary, function(i, e){
      console.log("id="+e.id+" icon="+e.icon+" text="+e.text+" parent="+e.parent);
   });
});

このように、HTML ID識別子による jstree(true) から get_json するのではなく
jsTree イベントの data からインスタンスオブジェクトを参照すべきです。