JSTree添加新父节点/子节点失败问题求助
让我来帮你排查这个JSTree添加节点失败的问题,我看了你的代码后,发现几个关键问题需要修正:
问题1:JSTree初始化代码存在语法错误
你初始化代码里的data属性末尾多了一个多余的点,这会直接导致JavaScript语法错误,让JSTree无法正常完成初始化:
// 错误写法 'data': $('#m_tree_3').data('treedata'). // 这里的点完全多余! // 正确写法 'data': $('#m_tree_3').data('treedata')
问题2:
create_node方法的参数格式不正确 JSTree的create_node方法不接受你当前传的数组格式参数,它需要按固定顺序逐个传递参数,正确的参数规则是:create_node(父节点, 节点数据, 插入位置, 回调函数, 是否展开)。
修正后的创建节点代码如下:
$('#m_tree_3').jstree().create_node( null, // 传null表示添加到根节点级别 { text: "New Node" }, // 节点核心数据,text是显示的节点名称 "first", // 插入位置:可选first/last/具体索引值 function() { alert("Dene"); }, // 节点创建完成后的回调 true // 是否自动展开新创建的节点 );
完整修正后的代码示例
建议你把创建节点的逻辑放在JSTree初始化完成的事件里,避免因为DOM或组件未就绪导致的问题:
$(document).ready(function() { // 初始化JSTree $('#m_tree_3').jstree({ 'plugins': ["wholerow", "checkbox", "types"], 'core': { "themes" : { "responsive": true }, 'data': $('#m_tree_3').data('treedata') }, "types" : { "default" : { "icon" : "fa fa-folder m--font-warning" }, "file" : { "icon" : "fa fa-file m--font-warning" } }, }).on('ready.jstree', function() { // 确认JSTree初始化完成后再创建节点 $('#m_tree_3').jstree().create_node( null, { text: "New Node" }, "first", function() { alert("Dene"); }, true ); }); });
额外提醒:还要确保后端传递的$categories数据格式符合JSTree的要求(每个节点至少包含text属性,有子节点的话需要children字段),如果数据结构不合法也会影响节点的正常渲染和创建。
内容的提问来源于stack exchange,提问作者user3201500




