4

私はjqTreeが初めてで、ajax 呼び出しの後にツリーをリロードしたいと思います。私はこのようなものを持っています:

$("select").change(function(){
    var url = 'lab.json';

    if ($(this).val() === 'RAD') {
        url = 'rad.json';
    }

    $.get(
        url, 
        function(jsonData) {
            $("#treedata").tree({data: jsonData});
        }, 
        "json"
    );
});

最初の呼び出しは機能していますが、次の呼び出しではツリーが新しいデータで更新されません。

初期化後にツリーを更新する方法はありますか?

ありがとう

編集 :

解決策を見つけましたが、完全ではありません。誰かがより良い解決策を持っている場合は、私に知らせてください:)

 $("#treebox").empty().append('<div id="treedata"></div>');
        $("#treedata").tree({
            data: jsonData
        });

$.empty() を使用して jqTree によって生成されたコンテンツを削除し、ツリーを新しいデータで更新するたびに jqTree を初期化する必要があります。

4

3 に答える 3

0

jQtree の現在のバージョン (0.1.3) では、サーバーからの遅延読み込みが可能です。

ドキュメントには、次のような URL を提供する必要があると書かれています。

<div id="tree1" data-url="/nodes/"></div>

$('#tree1').tree({
   dataUrl: '/example_data.json'
   data: <original data>
});

後続のすべてのリクエストは、次のようにノード ID を追加します。

<data-url>?node=<node-id>

そして、load_on_demand を設定する必要があります:

[
  {
    label: 'Saurischia',
    id: 1,
    load_on_demand: true
  },
  {
    label: 'Ornithischians',
    id: 23,
    load_on_demand: true
  }
]

以下も参照してください。

http://mbraak.github.com/jqTree/examples/example5.html

しかし、これを機能させるのに問題があり、次のような dataUrl 属性を手動で設定する必要がありました。

$(document).ready(function() {
  $("#tree1").tree({
    dataUrl: function(node) {
      if (node) {
        return '/nodes.json?node=' + node.id;
      } else {
        return '/nodes.json'
      }
    }
  }).bind('tree.click', function(event) {
    var node = event.node;
  });
});
于 2012-10-25T00:40:40.813 に答える
0

要素を初期化$jqtree_element = $("#tree1")し、いくつかの jqTree 初期化を実行したとします。$jqtree_element.tree(...)

コード (jqTree、1.0.0) を掘り下げたところ、これが非常に便利であることがわかりました。

$jqtree_element.data('simple_widget_tree')._refreshElements()
于 2015-05-08T15:38:28.537 に答える