jsTree で選択したノードのIDを取得するにはどうすればよいですか?
function createNewNode() {
alert('test');
var tree = $.tree.reference("#basic_html");
selectedNodeId = xxxxxxxxx; //insert instruction to get id here
tree.create({ data : "New Node Name" }, selectedNodeId);
}
JsTreeのノードは、本質的にラップされたリストアイテムです。これにより、最初のものへの参照が取得されます。
_var n = $.tree.focused().get_node('li:eq(0)')
_
ツリーへの参照がある場合は、$.tree.focused()
を置き換えることができます。
IDを取得するには、最初に一致した要素を取得します
_if (n.length)
id = n[0].id
_
または、セットの最初の要素で機能するjQuery attr関数を使用できます
_id = n.attr('id');
_
jstree
バージョン3.1.1
では、get_selected
から直接取得できます。
$("#<your tree container's id>").jstree("get_selected")
JsTreeの最新バージョン(3.3.3でチェック)では、これを実行してIDの配列を取得できます。
var ids = $('#tree').jstree('get_selected');
これにより、たとえば、["selected_id1", "selected_id2", "selected_id3"]
。選択されたnodes(IDではなく)を取得したい場合、これを行うことができます:
var nodes = $('#tree').jstree('get_selected', true);
current docs に詳細が含まれています。
複数の選択があるツリーから選択したIDを取得する際に問題が発生していました。これは私がそれらを得た方法です:
var checked_ids = [];
$("#your-tree-id").jstree('get_selected').each(function(){
checked_ids.Push($(this).data('id'));
});
選択したすべてのIDを取得するには、以下のコードを使用します
var selectedData = [];
var selectedIndexes;
selectedIndexes = $("#jstree").jstree("get_selected", true);
jQuery.each(selectedIndexes, function (index, value) {
selectedData.Push(selectedIndexes[index].id);
});
これで、選択されたすべてのIDが「selectedData」変数にあります
私の場合、データ呼び出しは機能しません。 attr関数を使用して、ノードデータにアクセスすることに成功しました。
$("#tree").jstree("get_selected").attr("my-data-name");
使うだけ
var nodeId = $('#FaqTreeView').jstree().get_selected("id")[0].id;
どこ #FaqTreeView
は、jstreeを含むdivのIDです。
次のコードを使用できますvar nodes = $( "#jstree_demo_div")。jstree(true).get_selected( "full"、true); //選択されたノードのリスト
nodes [0] .id // Whichは、配列から最初のオブジェクトのIDを提供します
<script type="text/javascript>
checked_ids.Push($(this).context.id);
</script>
これらはすべて、古いバージョンの古い回答です。バージョン3.3.3以降、選択したノードのすべての属性を取得するために機能します。
$('#jstree').jstree().get_selected(true)[0]
IDが必要な場合は、最後に.idを追加します。上記のコードをコピーすると、Web開発者ツールの他のすべての属性を見ることができます。
場合やjstreeバージョンでは、このソリューションは機能しません。
$('#tree').jstree('get_selected').attr('id');
定義された「id」の代わりに、何も得られません。私にとってトリックは何でしたか:
$("#tree").jstree("get_selected").toString();
Jstreeの最新バージョン。次のように実行できます。
<script type="text/javascript>
var checked_ids = [];
$('#your-tree-id).jstree("get_checked",null,true).each(function(){
checked_ids.Push(this.id);
});
alert(checked_ids.join(","));
</script>