8

jsTree コンテナに新しいノードを動的に追加しようとしています。まったく機能していません。何が欠けているのかわからない。

jsfiddle の例

$("#tree").jstree({
    core: {
        "animation": 0
    },
    "html_data": {},
    "themes": {
        "icons": false
    },
    "search": {
        "case_insensitive": true,
        "show_only_matches": true
    },
    "plugins": ["themes", "html_data", "search"]
});

$("#tree").jstree("create_node", $("node_1"), "after", { "data": "Hello World" });

html:

<div id="tree">
    <ul>
        <li id="node1"><a>Hello</a></li>
    </ul>
</div>
4

6 に答える 6

38

'check_callback' を設定: true、それ以外の場合は、作成、名前変更などのすべての操作が防止されます。そのようです:

        this.treeDiv.jstree(
                {

                    'core' : {
                        'check_callback': true,
                        'data' : {
                            'url' : function (node) {
                            return 'ajax_roots.json';
                            },
                            'data' : function (node) {}
                            }
                    },
                    "search" : {
                        "fuzzy" : false,
                        "show_only_matches": true,
                        "close_opened_onclear" : true
                    },
                    "plugins" : ["search", "sort", "json_data"]
                });
于 2014-04-02T21:39:10.397 に答える
2

core.check_callback を true に設定することは別として、simple を作成するのにそれほど多くの引数は必要ないことに言及する価値があります。次のようにするだけで簡単に実現できます。

$('#tree').jstree(true).select_node('nodeid');
var tr = $('#tree').jstree(true),
            selected = tr.get_selected();
selected = tr.create_node(selected, {"type":"file(or any other type you need)"});

これが誰かを助けることを願っています。私は問題があり、API に従おうとしましたが、動作しませんでした。代わりに、デモからコードを調べたところ、それが見つかりました。

于 2014-11-04T16:51:03.357 に答える
1

これの原因はわかりませんが、ノードの作成時にsetTimeoutを追加すると、問題が修正されます。

setTimeout(function() {
    $("#tree").jstree("create_node", $("node_1"), "after", { "data": "Hello World" });
}, 1000);
于 2012-07-04T12:17:16.070 に答える
1

必要なものを簡単に デモhttp://jsfiddle.net/gwxTa/2/ または http://jsfiddle.net/gwxTa/ または動的 - (追加ボタンをクリック) http://jsfiddle.net/VBSJ8/ または http:/ /jsfiddle.net/ak4Ed/

私の古い投稿を参照してください: jsTree が機能しない

動的追加ボタン機能のコード:

$(function() {
    $("#tree").jstree({
        "json_data": {
            "data": [
                {
                "data": "Hello",
                "attr": {
                    "id": "root.id"
                },
                "children": [{
                    "data": "Hello World",
                    "attr": {
                        "id": "node_1"
                    },
                    "children": []}
                  ]},
                ]
        },
        "plugins": ["themes", "json_data", "crrm"]
    });
});


    $("#tree").jstree("create", $("#node_1"), "inside", {
        "data": "child2"
    }, function() {
        alert("added");
    }, true);

スクリプトが含まれていることを願っています:

<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>

  <link rel="stylesheet" type="text/css" href="/css/normalize.css">
  <link rel="stylesheet" type="text/css" href="/css/result-light.css">

  <script type='text/javascript' src="http://static.jstree.com/v.1.0pre/jquery.jstree.js"></script>

 <script type='text/javascript' src="http://static.jstree.com/v.1.0pre/jquery.hotkeys.js"></script>
于 2012-07-04T11:59:09.500 に答える
0

新しいノードを追加する

$("#categories_jstree").jstree('create_node', '#', {'id' : '1944', 'text' : 'nosde1'}, 'last');

# は親ノード ID (empty_now) です。

node1 のネストされたノードを追加します

$("#categories_jstree").jstree('create_node', '#1944', {'id' : '1945', 'text' : 'subnode1_1'});

#1944 - 親ノード ID

于 2015-02-12T09:59:09.000 に答える