12

選択したノードのIDをjsTreeのルートノードに取得するにはどうすればよいですか?

Cが選択されたノードであると仮定すると、Cのすべての親IDを取得するにはどうすればよいですか。

A

  • B

    • C

      + C1

      + c2

次のコードは、直接の親IDのみを返します。Cを選択した場合、 Bのみを取得します。

 .bind("select_node.jstree", function (event, data) {  
    //`data.rslt.obj` is the jquery extended node that was clicked          
    alert("Selected node = "+ data.rslt.obj.attr("id"));
    alert("Parent of Selected node = "+ data.inst._get_parent(data.rslt.obj).attr("id"))
 });

出力:

Selected node = C

Parent of Selected node = B

すべての親ノードID、つまり選択されたノードからルートノードを取得する方法はありますか?

  • jsTreeで選択したノードのすべての子ノードを取得するにはどうすればよいですか?

この件に関するヘルプやガイダンスをいただければ幸いです。

4

2 に答える 2

16

jQuery で使用してすべての親を取得し、すべてのツリー項目がにあるためparents、 でフィルタリングします。これを試してください:lilijstree

var parents = data.rslt.obj.parents("li");

そして、子供childrenが jQuery で使用する場合は、次のようになります。

var children = data.rslt.obj.parent().find('li');

編集上記を使用して、すべての親と子を取得し、それぞれのすべての配列に配置する方法は次のとおりです。

両親:

var parents = [];
data.rslt.obj.parents("li").each(function () {
    parents.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
});

子供:

var children = [];
data.rslt.obj.find("li").each(function () {
    children.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
});
于 2012-04-13T12:10:39.260 に答える
11

1 より簡単な解決策

 .get_path ( node , id_mode )

ID の配列またはノード名の配列として、ノードへのパスを返します。mixed node : これは、パスが必要なツリー内の要素を指す DOM ノード、jQuery ノード、またはセレクターにすることができます.bool id_mode : true に設定すると、親の名前の代わりに ID が返されます。デフォルトは false です。

// To get path [ID or Name] from root node to selected node 

var ids = data.inst.get_path('#' + data.rslt.obj.attr('id'),true);

// Returns IDs from root to selected node

var names = data.inst.get_path('#' + data.rslt.obj.attr('id'),false); 

// Returns Name's from root to selected node 

alert("Path [ID or Name] from root node to selected node = ID's = "+ids+" :: Name's = "+names);
于 2012-04-24T06:38:11.300 に答える