2010-09-09 27 views
20

J'utilise le plugin jsTree jQuery et je veux exécuter du code lorsque l'utilisateur clique deux fois sur un nœud.Comment associer un comportement personnalisé à un double-clic dans jsTree?

Je n'arrive pas à le faire fonctionner. J'ai trouvé de la documentation sur un événement ondblclk mais il ne se déclenche pas.

browser.jstree(
      { 
       plugins: ["themes", "json_data", "ui", "cookies"], 
       callback: 
       { 
        ondblclk: function (node, tree) { 
         if (!thisReportBrowserthis._isFoldersOnly) { 
          var f = node; 
         } 
        } 
       } 
      } 
     ); 

Comment puis-je gérer les événements double clic avec jstree?

+1

Il semble que la documentation que j'ai trouvé pour l'extrait de code ci-dessus était hors de ce jour. – GiddyUpHorsey

Répondre

21

Il se trouve que je peux faire ceci:

jstree.bind("dblclick.jstree", function (event) { 
    var node = $(event.target).closest("li"); 
    var data = node.data("jstree"); 
    // Do my action 
}); 

node contient le li que vous avez cliqué et data contient les métadonnées avec mes informations en elle.

+1

Les données retournées ne sont pas définies. –

6

'dblclick.jstree' n'existe pas dans la dernière version jsTree 1.0.

DoubleClick pour le noeud:

$("#yourtree").delegate("a","dblclick", function(e) { 
    var idn = $(this).parent().attr("id").split("_")[1]; 
    alert(idn); //return NodeID  
}); 

Insérez cela si vous voulez juste noeud dblclicked

if (this.className.indexOf('icon') == -1) { /* is the node clicked a leaf? */ } 
+0

Je ne vois aucun identifiant sur mon arborescence (j'utilise le plugin HTML_DATA pour créer mon arborescence et je n'ai pas pris la peine de créer des ID), mais en ignorant ce code, cela fonctionne. ".on()" est la méthode jQuery la plus moderne, alors $ ("# yourtree"). on ("dblclick", "a", function (e) {...}); – mhenry1384

4

Il est un peu différent pour obtenir les données pour moi, mais par ailleurs la réponse de GiddyUpHorsey a été spot-on . Voici le code à nouveau:

 jstree.bind("dblclick.jstree", function (e, data) { 
      var node = $(e.target).closest("li"); 
      var id = node[0].id; //id of the selected node 
     }); 
+0

même pour moi, sauf supprimer les données du rappel car il est indéfini – frage

1

Les réponses ci-dessus ne fonctionnent pas sur la dernière version de jstree (qui est 3.3.4)
Cela m'a coûté la flexion par jour de l'esprit de travail mais j'ai finalement obtenu. Ici travaille à modifier le code doubleclick:

$('#tree1').bind("dblclick.jstree", function (event) { 
 
    var tree = $(this).jstree(); 
 
    var node = tree.get_node(event.target); 
 
    tree.edit(node); 
 
});

et voici un jsfiddle de travail.

0

en version 3.3.5, j'utilise celui-ci:

 $('#jstree').on("dblclick.jstree", function (e) { 
      var instance = $.jstree.reference(this), 
      node = instance.get_node(e.target); 
      // Code 
     });