2011-05-05 21 views
6

cómo puedo abrir/cerrar nodos de doble o simple clic del nombre de nodo ? Al igual que funciona aquí the first tree sample - pero no se utiliza jsTree 0.9.8la forma de abrir/cerrar los nodos de doble solo clic/en jsTree

-

<html> 
<head> 
<title> dashboard</title> 

<script type="text/javascript" src="_lib/jquery.js"></script> 
<script type="text/javascript" src="jquery.jstree.js"></script> 
<script type="text/javascript" src="_lib/jstreegrid.js"></script> 
<script type="text/javascript"> 
//<![CDATA[ 

$(document).ready(function(){ 

var data = [{ 
     data: "basics", 
     attr: {SOF: "<a href=\"http://www.w3schools.com\">Visit W3Schools.com!</a>"}, 
     children: [ 
     {data: "login", attr: {run: "run"}, 
      children: [     
      {data: "login", attr: {}} 
      ] 
     } , 
     {data: "Academic Year", attr: {run: "run"}, 
      children: [     
      {data: "login", attr: {}}, 
      {data: "Academic Year", attr: {filter: "mini", SOF: "<a href=\"http://www.w3schools.com\">Visit W3Schools.com!</a>"}} 
      ] 

     } 
     ] 
     }]; 
$("div#jstree").jstree({ 
plugins: ["themes","json_data","grid","dnd"], 
json_data: {data: data}, 
grid: { 
     columns: [ 
      {width: 220, header: "Group"}, 
         {cellClass: "col2", value: "run", width: 40, header: "run"}, 
         {cellClass: "col3", value: "filter", width: 40, header: "filter"}, 
         {cellClass: "col4", value: "SOF", width: 450, header: "SOF"} 
       ] 
      }, 
dnd: { 
drop_finish : function() { 
}, 
drag_finish : function() { 
}, 
drag_check : function (data) { 
return { 
after : true, 
before : true, 
inside : true 
}; 
} 
} 
}); 
}); 
//]]> 
</script> 
</head> 
<body> 
<div id="jstree"></div> 

</body> 
</html> 
+0

¿qué quieres para cambiar? ¿visibilidad? algún otro estilo? –

+0

Quise decir abrir/cerrar el nodo – Radek

Respuesta

11

Una forma es permitir a los tipos y plugins de interfaz de usuario y definir un controlador de eventos select_node en el tipo predeterminado de este modo:

$(element) 
     .jstree({ 
      "types" : { 
       "types" : { 
        "default" : { 
         "select_node" : function(e) { 
              this.toggle_node(e); 
              return false; 
             } 

        } 
       } 
      }, 
      "plugins" : [ "themes", "html_data","types", "ui" ] }); 
+0

¿podría decirme exactamente en qué parte de mi código necesito insertar su código? – Radek

+1

Coloque el bloque "types" justo antes de "complementos". ¡No olvides la coma! No olvide agregar "ui" y "tipos" dentro de la lista de "complementos". –

+1

Si es nuevo en jsTree y busca ejemplos básicos, consulte la publicación de mi blog http://tkgospodinov.com/jstree-part-1-introduction/. Espero que ayude. –

1

¡No hay que añadir la opción clickable: [...] al crear su árbol?

+0

No sé :-) ¿dónde puedo encontrar ... – Radek

2

Además de la respuesta correcta de los conocimientos tradicionales ...

Este La solución interrumpirá la navegación cuando haga clic en elementos de árbol con el atributo href (establecido por JSON, datos XML o directamente en HTML).

Para resolver este problema, en la hoja configurados "tipos" (donde los presentadores deben desencadenar la navegación) establecidos este controlador:

"select_node": function (e) { 
    document.location = e.children("a").attr("href"); 
    return false; 
} 
0
$('#domainvariants').jstree({ 
    plugins : ["themes","html_data","ui","crrm"] 
}).bind("select_node.jstree", function (event, data) { 
    return data.instance.toggle_node(data.node); 
}); 
+0

Este código me da el siguiente error al hacer clic en un elemento: "TypeError no capturado: No se puede llamar al método 'toggle_node' de undefined" – Jules

+0

Tengo la versión "jsTree 2.0.0-alpha" –

Cuestiones relacionadas