43

次のコードを使用しています。

$("#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&amp;pagina=dashboard&amp;id=6',false);">Beneden</a>
        </li>
        <li>
          <a href="#" onclick="goTo('index.php?module=alarm&amp;pagina=dashboard&amp;id=7',false);">Boven</a>
        </li>
      </ul>
    </li>
  </ul>
</div>

私の問題は、すべてのノードが閉じたままになっていることjstree('open_all');です。

4

9 に答える 9

61

jsTreeのドキュメントは「準最適」です。ドキュメントには、初期化が非同期で機能することが明確に記載されていません。core.loaded()があります:

ロードされたイベントをトリガーすることのみを目的とするダミー関数。このイベントは、ツリーのルート ノードがロードされた後、initial_open で設定されたノードが開かれる前に 1 回トリガーされます。

loaded.jstreeこれは、ツリーのセットアップ後にイベントが発生したことを示しています。そのイベントにフックして、すべてのノードを開くことができます。

var $treeview = $("#treeview");
$treeview
  .jstree(options)
  .on('loaded.jstree', function() {
    $treeview.jstree('open_all');
  });
于 2012-06-13T16:02:06.973 に答える
20

ツリーがロードされたときにすべてのノードを開く場合:

$("#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");
    })      
});
于 2012-09-23T16:22:50.940 に答える
10

上記のすべての回答は、私のワークスペースでは機能しません。もう一度検索したところ、このリンク ( Why doesn't jsTree open_all() work for me? ) が役に立ち、回答を投稿しました。

jstree バージョン: 3.0.0-bata10

$(document).ready(function() {
  $("#tree").bind("loaded.jstree", function(event, data) { 
    data.instance.open_all();
  });
  $("#tree").jstree();
})
于 2014-03-28T07:33:33.213 に答える
1

シンプルなコードを使用する

$(".jstree").jstree().on('loaded.jstree', function () {
     $(".jstree").jstree('open_all');
})
于 2014-07-07T11:43:46.893 に答える
1

html データを使用する場合、「任意の <li> 要素に jstree-open クラスを設定して、最初に拡張し、その子が表示されるようにすることができます。」- https://www.jstree.com/docs/html/

<li class="jstree-open" id="node_1">My Open Node</li>
于 2016-03-03T06:56:06.467 に答える
-1
.bind("loaded.jstree", function (event, data) {
        // you get two params - event & data - check the core docs for a detailed description
        $(this).jstree("open_all");
    }) 
于 2013-10-25T08:46:54.133 に答える