Comment puis-je obtenir l'id du nœud sélectionné dans un jsTree ?
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);
}
Les nœuds dans jsTree sont essentiellement des éléments de liste encapsulés. Cela vous donnera une référence au premier.
var n = $.tree.focused().get_node('li:eq(0)')
Vous pouvez remplacer $.tree.focused()
si vous avez une référence à l'arborescence.
Pour obtenir l'id, prenez le premier élément correspondant
if (n.length)
id = n[0].id
ou vous pouvez utiliser la fonction attr jQuery, qui fonctionne sur le premier élément de l'ensemble
id = n.attr('id');
Incapable de faire fonctionner la solution harpo et ne voulant pas utiliser la solution d'Olivier qui utilise les fonctions internes de jsTree, j'ai proposé une approche différente.
$('#tree').jstree('get_selected').attr('id')
C'est si simple. La fonction get_selected
renvoie un tableau des éléments de liste sélectionnés. Si vous faites .attr
sur ce tableau, jQuery examinera le premier élément de la liste. Si vous avez besoin d'ID de sélections multiples, traitez-les plutôt comme un tableau.
Dans jstree
version 3.1.1
, vous pouvez l'obtenir directement à partir de get_selected
:
$("#<your tree container's id>").jstree("get_selected")
Dans la version la plus récente de jsTree (vérifiée à la 3.3.3), vous pouvez le faire pour obtenir un tableau d'identifiants:
var ids = $('#tree').jstree('get_selected');
Cela renverra, par exemple, ["selected_id1", "selected_id2", "selected_id3"]
. Si vous voulez obtenir les node sélectionnés (pas les ID), vous pouvez le faire:
var nodes = $('#tree').jstree('get_selected', true);
Les documents actuels contiennent plus d’informations.
$.jstree._reference('#my_tree_container')._get_node(null, true).each(function() {
id = $(this).attr("id");
alert('Id selected: ' + id);
});
J'avais des problèmes pour obtenir les identifiants sélectionnés à partir d'une arborescence avec plusieurs sélections. Voici comment je les ai eues:
var checked_ids = [];
$("#your-tree-id").jstree('get_selected').each(function(){
checked_ids.Push($(this).data('id'));
});
pour obtenir tous les identifiants sélectionnés, utilisez le code ci-dessous
var selectedData = [];
var selectedIndexes;
selectedIndexes = $("#jstree").jstree("get_selected", true);
jQuery.each(selectedIndexes, function (index, value) {
selectedData.Push(selectedIndexes[index].id);
});
maintenant vous avez tous les identifiants sélectionnés dans la variable "selectedData"
Dans mon cas, l'appel de données ne fonctionne pas. J'ai réussi à accéder à mes données de noeud en utilisant la fonction attr.
$("#tree").jstree("get_selected").attr("my-data-name");
Juste utiliser
var nodeId = $('#FaqTreeView').jstree().get_selected("id")[0].id;
où #FaqTreeView
est l'id de votre div contenant le jstree.
Vous pouvez utiliser le code suivant Var nodes = $ ("# jstree_demo_div"). Jstree (true) .get_selected ("full", true); // Liste des nœuds sélectionnés
noeuds [0] .id // ce qui donnera l'identifiant du 1er objet du tableau
<script type="text/javascript>
checked_ids.Push($(this).context.id);
</script>
Ce sont toutes d'anciennes réponses pour d'anciennes versions. A partir de la version 3.3.3, cela fonctionnera pour obtenir tous les attributs du noeud sélectionné.
$('#jstree').jstree().get_selected(true)[0]
Si vous voulez ensuite l'identifiant, ajoutez .id à la fin. Vous pouvez consulter tous les autres attributs des outils de développement Web si vous copiez le code ci-dessus.
Dans certains cas et/ou versions jstree, cette solution ne fonctionne pas.
$('#tree').jstree('get_selected').attr('id');
Au lieu de "id" défini, je n’obtiens rien .
$("#tree").jstree("get_selected").toString();
Avec la dernière version de Jstree; vous pouvez le faire comme suit:
<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>