選択したノードの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、つまり選択したノードからルートノードを取得する方法はありますか?
この件に関するヘルプやガイダンスをいただければ幸いです。
JQueryでparents
を使用してすべての親を取得し、li
でフィルタリングします。すべてのツリーアイテムはli
でjstree
であるため、次のことを試してください。
var parents = data.rslt.obj.parents("li");
また、子供には、次のようにjQueryでchildren
を使用します。
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() });
});
1より簡単な解決策
.get_path ( node , id_mode )
iDの配列またはノード名の配列として、ノードへのパスを返します。混合ノード:これは、DOMノード、jQueryノード、またはツリー内の要素を指すセレクターであり、そのパスが必要です。boolid_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);