How can I rename a jsTree node

Chris picture Chris · Jun 6, 2011 · Viewed 30k times · Source

I am not talking about $("#demo1").jstree("rename",node) which makes the node editable for the user. I am talking about the name being changed within the code. For example my nodes are all prefixed with a 2 digit number "[01]" so before I call $("#demo1").jstree("rename",node) I want to strip out the prefix, and put it back in once the user has finished editing. I have tried selecting "#nodeid a" but inside the hyperlink there is an ins tag and this gets replaced if i replace the URL contents. The documentation hasn't been helpful and I havent had much luck looking through the libraries code, can any help me? Chris

Answer

Arend picture Arend · Jun 6, 2011

The recommended method is to use rename_node

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

Please keep in mind that by default all modifications to the tree are prevented (create, rename, move, delete). To enable them set core.check_callback to true

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

Rename your node (alternative, not recommended)

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

Debugging

If you still encounter trouble, you can use this method to get the last error.

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

For older versions (v1.*)

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

See also: