这是我的 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 请求。另请注意,我必须使用相当可怕的工具来查找元素的 id,因为在尝试访问时记录的代码只会为我产生错误(而且我使用与文档相同版本的 jsTree)n.attr("id")
. 另外,在bind("select_node"...
我必须使用未记录的函数来再次查找 id 下。经过数小时的故障排除后,我仍然完全感到困惑,但显然有些东西运行不正常。