You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动