如何重命名jsTree节点

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

推荐的方法是使用rename_node

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

请记住 , 默认情况下,会阻止对树的所有修改 (创建,重命名,移动,删除)。 要启用它们,请将core.check_callback设置为true

 $('#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] ); 

也可以看看:

  • 这个jsfiddle用于比较和两种方法的例子。
  • 与jsTree的交互 (如何调用API方法)
  • rename_node API文档
  • set_text API文档

我相信在上面的答案中有关于方括号“[”的语法错误。 我使用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"); 

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

 $('#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; } });