2011-06-06 29 views
15

No estoy hablando de $("#demo1").jstree("rename",node) que hace que el nodo sea editable para el usuario. Estoy hablando del nombre que se cambia dentro del código. Por ejemplo, todos mis nodos tienen un prefijo de 2 dígitos "[01]", así que antes de llamar al $("#demo1").jstree("rename",node) quiero quitar el prefijo y volver a colocarlo una vez que el usuario haya terminado de editarlo. He intentado seleccionar "#nodeid a" pero dentro del hipervínculo hay una etiqueta de entrada y esto se reemplaza si reemplazo el contenido de la URL. La documentación no ha sido útil y no he tenido mucha suerte mirando el código de las bibliotecas, ¿puede ayudarme alguien? Chris¿Cómo puedo cambiar el nombre de un nodo jsTree?

+0

Cómo sobre el uso de expresiones regulares usando para separar los dígitos de las palabras –

+0

continúan ... proporcione un selector de jquery para ver si funciona ... – Chris

Respuesta

21

El recomienda método es usar rename_node

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

Please keep in mind que por defecto todas las modificaciones del árbol son impedido (crear, renombrar, mover, borrar). Para que puedan establecer core.check_callback a cierto

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

cambiar el nombre del nodo (alternativa, no se recomienda)

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

Depuración

Si sigue teniendo problemas, puede usa este método para obtener el último error. (. v1 *)

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

Para versiones anteriores

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

Consulte también:

+11

$ ("# demo1"). jstree ('set_text', nodo, texto); funciona – jnoreiga

+1

Según [el documento] (https://www.jstree.com/api/#/?f = set_text (obj% 2C% 20val)), 'set_text()' es ** usado internamente, por favor use 'rename_node (obj, val)' **. – Pang

+0

Como mencionó @jnoreiga: para el método 'set_text' tengo que cambiar la sintaxis 'rename_node' a '$ (" # demo1 "). Jstree (' rename_node ', [node], text);' luego funcionó. – Twix

5

Creo que hay un error de sintaxis con respecto a los corchetes "[" en la respuesta anterior Yo uso jsTree 3.0.4 y esta es la sintaxis correcta -

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

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

Gracias !! better - $ ("# demo1"). jstree ('rename_node', nodo, texto); (porque set_text es un método privado) – Shoham

1

Debe encender el interruptor para permitir la operación de cambio de nombre, como por ejemplo:

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

}); 
Cuestiones relacionadas