web-dev-qa-db-ja.com

jsTreeノードの名前を変更するにはどうすればよいですか

ノードをユーザーが編集できるようにする$("#demo1").jstree("rename",node)については話していません。コード内で名前が変更されていることについて話しています。たとえば、ノードにはすべて2桁の数字「[01]」が付いているので、$("#demo1").jstree("rename",node)を呼び出す前に、接頭辞を取り除き、ユーザーが編集を終えたら元に戻します。 「#nodeida」を選択しようとしましたが、ハイパーリンク内にinsタグがあり、URLの内容を置き換えるとこれが置き換えられます。ドキュメントは役に立たず、ライブラリコードを調べるのにあまり運がなかったのですが、何か助けになりますか?クリス

17
Chris

推奨メソッドは 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] ); 

関連項目:

25
Arend

上記の回答の角括弧「[」に関して構文エラーがあると思います。私はjsTree3.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;
        }

});
1
Cherry