web-dev-qa-db-fra.com

Jstree OnSélectionnez événement

J'essaie d'obtenir le texte d'un nœud sélectionné dans un jstree. Je suis capable de remplir l'arborescence et de déclencher l'événement OnSelect, mais je ne peux pas savoir quel nœud a été cliqué. J'ai vu des exemples sur le net qui utilisent data.rslt.obj.attr("data") pour aller chercher le texte, mais cela revient non défini pour moi. De plus, lorsque j'essaie d'obtenir le nœud sélectionné à l'aide de .jstree('get_selected') Je ne trouve pas le texte du nœud n'importe où dans l'objet. Comment puis-je obtenir le texte du nœud?

Voici ma fonction de rappel ONSElect:

function onSelect(event, data)
{
    // Get the name of the equipment that was selected.
    var selected_node = $("#equipment_tree").jstree('get_selected');
    var equipment_name = data.rslt.obj.attr("data");
}
18
Dylan Klomparens

Mise à jour en 2018.

Grâce au commentaire de @ Profk, l'API a changé dans la nouvelle version de Jstree. À Jstree V3.1.0 (ou plus tôt), l'API a changé pour:

$("#treeContainer").on(
        "select_node.jstree", function(evt, data){
            //selected node object: data.node;
        }
);

Pour Jstree ancienne version (avant 2013).

Vous pouvez obtenir l'objet de noeud sélectionné et son texte par:

$("#treeContainer").bind(
        "select_node.jstree", function(evt, data){
            //selected node object: data.inst.get_json()[0];
            //selected node text: data.inst.get_json()[0].data
        }
);
47
shaochuancs

jstree nouvelle version pour obtenir le texte du nœud doit utiliser data.node.text

$("#treeContainer").on("select_node.jstree",
     function(evt, data){
          alert(data.node.text);
     }
);
18
Behnam Mohammadi
$("#equipment_tree").bind("select_node.jstree", function(evt, data){

             var i, j, r = [], ids=[];
                for(i = 0, j = data.selected.length; i < j; i++) {
                  r.Push(data.instance.get_node(data.selected[i]).text);
                }
                alert('Selected: ' + r.join(', '));
           }
);

tu dois essayer ça.

1
Jack

Avec la version actuelle, il est préférable d'utiliser get_selected avec full: true, ce qui signifie que la méthode renvoie l'objet complet (s) et non seulement ID.

Donc, par exemple:

$("#treeNode").jstree('get_selected', true);

ou:

$("#treeNode").jstree().get_selected(true);

Chaque élément de la matrice aura toutes les propriétés en tant que texte ou identifiant.

1
mikus