を書きましたが、
この時、選択配下のノードツリーを配列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 からインスタンスオブジェクトを参照すべきです。