Как переименовать jsTree node
Я не говорю о $("#demo1").jstree("rename",node)
, который делает node доступным для редактирования для пользователя. Я говорю об изменении имени в коде. Например, мои узлы имеют префикс с 2-значным номером "[01]", поэтому перед тем, как я позвоню $("#demo1").jstree("rename",node)
, я хочу снять префикс и вернуть его обратно, как только пользователь закончит редактирование. Я попытался выбрать "#nodeid a", но внутри гиперссылки есть тег ins, и это заменяется, если я заменяю содержимое URL. Документация не помогла, и мне не повезло, просматривая код библиотеки, может ли кто-нибудь мне помочь? Крис
Ответы
Ответ 1
Метод рекомендуется использовать rename_node
$("#demo1").jstree('rename_node', node , text );
Обратите внимание, что по умолчанию все изменения в дереве (создавать, переименовывать, перемещать, удалять). Чтобы включить их core.check_callback
в true
$('#demo1').jstree({
'core': {
'check_callback': true,
/// rest of the options...
}
});
Переименуйте node (альтернативный, не рекомендуется)
$("#demo1").jstree('set_text', node , text );
Отладка
Если вы все еще сталкиваетесь с проблемами, вы можете использовать этот метод для получения последней ошибки.
$('#demo1').jstree(true).last_error()
Для более старых версий (v1. *)
$("#demo1").jstree('rename_node', [node , text] );
$("#demo1").jstree('set_text', [node , text] );
См. также:
Ответ 2
Я считаю, что в приведенном выше ответе есть синтаксическая ошибка в отношении квадратных скобок "[". Я использую 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");
Ответ 3
Вы должны включить переключатель, чтобы разрешить операцию переименования, например:
$('#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;
}
});