私は次のコードを使用しています:
$("#treeview").jstree();
$("#treeview").jstree('open_all');
次のHTMLを使用します。
<div id="treeview">
<ul>
<li>
<a href="#">rubentebogt</a>
<ul>
<li>
<a href="#" onclick="goTo('index.php?module=alarm&pagina=dashboard&id=6',false);">Beneden</a>
</li>
<li>
<a href="#" onclick="goTo('index.php?module=alarm&pagina=dashboard&id=7',false);">Boven</a>
</li>
</ul>
</li>
</ul>
</div>
私の問題は、すべてのノードが閉じたままになっていることです。jstree( 'open_all');でノードを開くことができません。
jsTree documentation は「準最適」です。ドキュメントには、初期化が非同期に機能することを明確に記載されていません。 core.loaded() があります:
ロードされたイベントをトリガーすることのみを目的とするダミー関数。このイベントは、ツリーのルートノードがロードされた後、initially_openで設定されたノードが開かれる前に1回トリガーされます。
これは、イベントloaded.jstree
は、ツリーがセットアップされた後に発生します。そのイベントにフックして、すべてのノードを開くことができます。
var $treeview = $("#treeview");
$treeview
.jstree(options)
.on('loaded.jstree', function() {
$treeview.jstree('open_all');
});
JstreeとChromeのバージョン3を使用しています。ロードされたイベントは私にとっては機能しませんでしたが、jstreeインスタンスが作成された後でもreadyイベントは機能しました。
$('#treeview').on('ready.jstree', function() {
$("#treeview").jstree("open_all");
});
http://www.jstree.com/api/#/?q=.jstree%20Event&f=ready.jstree
ツリーのロード時にすべてのノードを開く場合:
$("#treeview")
// call `.jstree` with the options object
.jstree({
"plugins" : ["themes", "html_data","ui","crrm","sort"]
})
.bind("loaded.jstree", function (event, data) {
// you get two params - event & data - check the core docs for a detailed description
$(this).jstree("open_all");
})
});
上記のすべての答えは私のワークスペースでは機能しません。私は再び検索してこのリンクを見つけました( なぜjsTree open_all()がうまくいかないのですか? )が役に立ち、答えを投稿してください:
jstreeバージョン:3.0.0-bata10
$(document).ready(function() {
$("#tree").bind("loaded.jstree", function(event, data) {
data.instance.open_all();
});
$("#tree").jstree();
})
シンプルなコードを使用する
$(".jstree").jstree().on('loaded.jstree', function () {
$(".jstree").jstree('open_all');
})
Htmlデータを使用する場合は、「<li>要素にjstree-openクラスを設定して、最初に拡張し、その子が見えるようにすることができます。」 - https://www.jstree.com/docs/html/
<li class="jstree-open" id="node_1">My Open Node</li>
次のようにアニメーションを開閉に適用することもできます。
_$(document)
.on("click", "#open-all-folders", function () {
// param1 set to null to open/close all nodes
// param2 is the duration in milliseconds
$("#tree-ref").jstree().open_all(null, 200);
})
.on("click", "#close-all-folders", function () {
$("#tree-ref").jstree().close_all(null, 200);
});
_
(または同様に.on('ready.jstree', function() { // code here }
に適用);
ここですべての回答を試しましたが、jsTree(v3.3.4)では機能しませんでした。働いたのはload_node.jstree
イベント:
.on( 'load_node.jstree', function () {
jstree.jstree( "open_all" );
} )