如何重命名jsTree节点

时间:2011-06-06 15:58:51

标签: javascript jquery jstree

我不是在谈论$("#demo1").jstree("rename",node),它使节点可以为用户编辑。我在谈论代码中正在更改的名称。例如,我的节点都以2位数字“[01]”作为前缀,因此在我调用$("#demo1").jstree("rename",node)之前我想要删除前缀,并在用户完成编辑后将其重新放入。我已经尝试选择“#nodeid a”,但在超链接中有一个ins标签,如果我替换URL内容,这将被替换。文档没有帮助,我没有看到图书馆代码的运气,可以帮助我吗?克里斯

4 个答案:

答案 0 :(得分:24)

推荐方法是使用rename_node

$("#demo1").jstree('rename_node', node , text );
  

Please keep in mind 默认情况下对树的所有修改都是   阻止(创建,重命名,移动,删除)。要启用它们设置   core.check_callback为真

$('#demo1').jstree({
    'core': {
        'check_callback': true,
        /// rest of the options...
    }
});

重命名您的节点(替代方案,不推荐)

$("#demo1").jstree('set_text', node , text );

<强>调试

如果您仍然遇到问题,可以使用此方法获取上一个错误。

$('#demo1').jstree(true).last_error()

旧版本(v1。*)

$("#demo1").jstree('rename_node', [node , text] ); 
$("#demo1").jstree('set_text', [node , text] ); 

另见:

答案 1 :(得分:5)

  

我相信在上面的答案中有关于方括号“[”的语法错误。我使用jsTree 3.0.4,这是正确的语法 -

right -    $("#demo1").jstree('set_text',node,text);
wrong -    $("#demo1").jstree('rename_node', [node , text] );    

Example - 
$("#tree_3").jstree('set_text',"#idSelectorForNode" ,"NewName");

答案 2 :(得分:1)

您应该打开开关以允许重命名操作,例如:

$('#container').jstree({
    'core' : {
        'check_callback' : function (operation, node, node_parent, node_position, more) {
            // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node'
            // in case of 'rename_node' node_position is filled with the new node name
            return operation === 'rename_node' ? true : false;
        }

});

答案 3 :(得分:0)

您可以使用它通过 jstree refresh 更新节点文本:

$("#demo1").jstree(true).rename_node(node , "Renamed_Text");