web-dev-qa-db-fra.com

Comment obtenir l'identifiant du noeud sélectionné dans jsTree?

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);
}
23
murze

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');
10
harpo

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.

98
Brad

Dans jstree version 3.1.1, vous pouvez l'obtenir directement à partir de get_selected:

$("#<your tree container's id>").jstree("get_selected")
11
tipycalFlow

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.

4
Peter Rankin
  $.jstree._reference('#my_tree_container')._get_node(null, true).each(function() {
    id = $(this).attr("id");
    alert('Id selected: ' + id);        
  });
3
Olivier Grimard

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'));                         
});
1
agarcia

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"

1
Ali

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");
1
Damien C

Juste utiliser

var nodeId = $('#FaqTreeView').jstree().get_selected("id")[0].id;

#FaqTreeView est l'id de votre div contenant le jstree.

0

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

0
Arti Gaikwad
<script type="text/javascript>
    checked_ids.Push($(this).context.id);
</script>
0
harshboss

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.

0
Tom McDonough

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();
0
GTodorov

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>
0
Jamshid Hashimi