これは、jsTree のインスタンス化コードです。
$("#folder_tree").jstree({
"themes" : {
"theme" : "default",
"dots" : true,
"icons" : true
},
"json_data" : {
"ajax" : {
"url" : "/portal/folders",
"data" : function(n) {
if ($(n[0]).find("a").attr("id")) {
console.log($(n[0]).find("a").attr("id").split('_')[1]);
return {
"id" : $(n[0]).find("a").attr("id").split('_')[1]
};
}
return { "id" : "0" };
}
}
},
"plugins" : [ "themes", "json_data", "ui", "contextmenu", "dnd", "search", "crrm" ]
}).bind("select_node.jstree", function(e,data) {
console.log(data.rslt.obj.context.id);
});
最初の読み込み (0 の場合) ではデータが正しく読み込まれますが、クリックして任意のフォルダーを展開すると、次のエラーが表示されます。
Uncaught TypeError: Object [object Object] has no method 'addBack'
展開されたノードの正しい ID がコンソールに記録され、サーバーに対して ajax 要求が正しく行われているにもかかわらずです。アクセスしようとすると、ドキュメント化されたコードがエラーしか生成しないため (ドキュメントと同じバージョンの jsTree を使用している)、要素の ID を見つけるためにかなり恐ろしいクラッジを使用する必要があることにも注意してください。n.attr("id")
. さらに、bind("select_node"...
ドキュメント化されていない関数を使用して ID を再度検索する必要があります。トラブルシューティングに何時間も費やした後も、まだ完全に当惑していますが、何かが明らかに正しく動作していません。