2010-09-09 27 views
20

Estoy usando el plugin jsTree jQuery y quiero ejecutar código cuando el usuario hace doble clic en un nodo.¿Cómo puedo adjuntar un comportamiento personalizado con un doble clic en jsTree?

Parece que no puedo hacer que funcione. Encontré algo de documentación en un evento ondblclk pero no se dispara.

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

Cómo puedo manipular los acontecimientos doble clic con jstree?

+1

Parece la documentación que encontré para el fragmento de código anterior era fuera de fecha. – GiddyUpHorsey

Respuesta

21

Resulta que yo puedo hacer esto:

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

node contiene el li que se hizo clic y data contiene los metadatos con mi información en ella.

+1

Devuelve datos no definidos. –

6

'dblclick.jstree' no existe en la última versión jsTree 1.0.

de DoubleClick para el nodo:

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

Inserte esta opción si desea simplemente dblclicked nodo

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

No veo ninguna "identificación" en mi árbol (estoy usando el complemento HTML_DATA para crear mi árbol y no me molesté en crear ningún ID), pero omitiendo ese código esto funciona. ".on()" es la forma más moderna de jQuery para hacer esto, así que do $ ("# yourtree"). on ("dblclick", "a", function (e) {...}); – mhenry1384

4

Es un poco diferente para obtener los datos fuera para mí, pero por lo demás la respuesta de GiddyUpHorsey estaba en el lugar . Aquí está el código de nuevo:

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

mismo para mí, excepto eliminar los datos de la devolución de llamada, ya que no está definido – frage

1

Las respuestas anteriores no funcionan en la versión más reciente de jstree (que es 3.3.4)
Esto me costó un día de trabajo de doblado mente pero finalmente lo consiguió. Aquí está trabajando doble clic para editar código:

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

y aquí hay una jsfiddle de trabajo.

0

como la versión 3.3.5, estoy usando la siguiente:

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