2012-07-16 47 views
5

のすべての子とサブの子ノードを取得します。しかし、どういうわけか、再帰を使わないとうまくいきません。 jsTreeにはより良い方法がありますか?jstreeのjQueryプラグイン - 私は私が選択した親のすべてのノードおよびサブノードを取得しようとしています<a href="http://jstree.com" rel="noreferrer">jsTree jquery plugin</a></p> <p>を使用していた親

+0

P.S. - 私はここで私の質問に答えました。 – Sid

答えて

2

。私の場合は、xmlをツリーのデータソースとして使用しています。 open_nodeイベントを次のようにjstreeにバインドします。 xmlを使用していても、内部構造はhtmlデータの構造であることに気をつけてください。

// jsTree Configuration hash 
var jsTreeConfig = {}; 

$("#demo1").jstree(jsTreeConfig) 
      .bind('open_node.jstree', function(e, data) { 
       var parentObj = data.rslt.obj; // parent object 
       var jstreeInstance = data.inst; // jstree instance 
       $(data.rslt.obj).find("li").each(function(idx, listItem) { 
        var child = $(listItem); // child object 
        // do Stuff with child which can be any level of hierarchy depth 
        // ... 
       }); 
      }); 
+0

貧弱なインデントには申し訳ありません。 jstree({...})には、jstreeをインスタンス化するためのすべてのオプションがあります。このためにはjQueryをプリロードする必要があります。 – Sid

4

あなたはすべてこのセレクタを使用することにより、完全なツリーを取得することができます:私はこれを行う方法を発見した$("#demo1").find("li > a")

+0

ありがとう@fliesplが、私は特定の親の子ノードだけが必要です。私はそれをやる方法を考え出した。私はそれをテストした後すぐに回答を投稿するつもりです。 – Sid

4

私は以前のソリューションを試しましたが、最新バージョンのjsTree(v3.2.1)では動作しません。以下は、親ノードの子ノードとサブノードを取得するための更新されたソリューションです。

$("#myTree").bind('selected_node.jstree', function (node, data) { 
    var selectedNodes = $("#myTree").jstree(true).get_json(data.node.id, { flat: true }); 
    for (var i = 0; i < selectedNodes.length; i++) { 
     // Apply logic here 
     // ... 
     // ... 
     // ... 
    } 
}); 
関連する問題

 関連する問題