3

主題はかなり明確だと思います。:)

私は jstree の初心者で、ドキュメントを解析しようとしましたが、これに少し行き詰まっています。次のコードがあります。

$("#tree").jstree({
   "json_data" : {
       "data" : [
           tree.company
       ]
   },
   "themes" : {
       "theme" : "smb",
       "dots" : false,
       "icons" : true
   },
   "plugins" : [ "themes", "json_data", "ui" ]
}).bind("select_node.jstree", function (event, data) {
   $('#tree').jstree.refresh(data.inst.get_selected());  // FIXME
});

ツリーは問題なく読み込まれて表示されますが、表示されたツリーの新しいルートにしたいノードをクリックすると、FIXME とマークされた行でエラーが発生します。私は喜びを感じずにあらゆる種類のことを試しましたが、本当に助けていただければ幸いです. 私は何を間違っていますか?

4

2 に答える 2

3

その行でエラーが発生する理由は、次の行で構文が少しずれているためだと確信しています。

$('#tree').jstree.refresh(data.inst.get_selected());

代わりにこれを試してください:

$('#tree').jstree("refresh", data.inst.get_selected());
于 2012-04-17T19:51:35.460 に答える
2

If the entire tree needs to be refreshed, then the tree's container can be referenced and refreshed.

.bind("select_node.jstree", function (event, data) {
    $.jstree._reference(data.inst.get_container()).refresh(); //(data.inst.get_selected());  // FIXME
}).bind("refresh.jstree", function (event, data) {
    alert("Refreshed!");
});

If just the node needs to be referenced in select_node: data.rslt.obj[0];

Or another round about way to get it (same node as above): $.jstree._reference(data.inst.get_container()).get_selected();

You may also need to destroy and rebuild the tree: $.jstree._reference("#tree").destroy(); I know this may seem wasteful, but you are replacing the root node anyways.

于 2012-04-17T23:35:42.087 に答える