
En este tutorial veremos cómo instalar y configurar un jsTree sencillo, ya que la documentación oficial deja bastante que desear. Antes de comenzar, algunas de las características que soporta:
- Varias fuentes de datos: HTML, JSON, XML
- Cargas AJAX
- Drag & Drop
- Múltiples temas
- Sistema de eventos jQuery
- Librería para navegación con atajos de teclado
- Configuración multiidioma
- Etc, etc
En este tutorial nos vamos a limitar a configurar y desplegar un JSTree sin muchas florituras. En próximos tutoriales hablaremos de funcionalidades más específicas como drag & drop, añadir menús contextuales, renombrar un nodo, asociar eventos más complicados, etc.
Primer paso: instala la librería
Ve a la página de JSTree y descarga la última versión. Descomprime la carpeta y colócala en el lugar que quieras de tu directorio web.
Hecho esto, incluye estas líneas en la cabecera de tu archivo HTML:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="jstree/jquery.jstree.js"></script>
Segundo paso: monta una estructura
Lo bueno de JSTree es que puedes generarlo a partir de HTML, JSON o XML. En este caso vamos a montar una estructura HTML con elementos <li> como la siguiente:
<div id="selector">
  <ul><li id="blog"><a href="#">Blog</a>
    <ul><li id="articulos"><a href="#">Articulos</a>
      <ul>
	<li id="articulo1"><a href="#">Articulo 1</a></li>
	<li id="articulo2"><a href="#">Articulo 2</a></li>
      </ul><li>
     <li id="tutorial"><a href="#">Tutorial</a>
        <ul>
	<li id="articulo3"><a href="#">Tutorial 1</a></li>
	<li id="articulo4"><a href="#">Tutorial 2</a></li>
        </ul>
     </li></ul>
   </li></ul>
</div>
El elemento selector es muy importante, ya que define dónde en qué div se va a cargar el objeto JSTree.
Tercer paso: planta un árbol
Para que el JSTree funcione sólo habría que añadir la siguiente sentencia en un script de la cabecera:
$(document).ready(function() {
   $("#selector").jstree();
});
Así de simple. Aunque ahora mismo es un árbol bastante inútil, al menos permite desplegar y plegar sus nodos de forma jerárquica:
Por último vamos a experimentar con la configuración:
JSTree es un plugin al que se le pueden enchufar multitud de plugins propios. La forma correcta de declararlos es la siguiente:
$("#selector").jstree({
   "plugins" : [ "html_data", "types", "themes", "ui", "dnd" ]
  });
Vamos a usar el plugin themes para modificar el aspecto visual del árbol para que se parezca al árbol de directorios de Mac OS:
$("#selector").jstree({
  "themes" : {
     "theme" : "apple",
     "dots" : true,
     "icons" : true
   },
   "plugins" : [ "html_data", "themes", "ui" ]
  });
También podemos asociar un evento a un nodo, por ejemplo un mensaje alert. Para ello podemos usar la función .bind del plugin ui, que es útil para implementar eventos de interfaz sobre nodos. Basta con añadir al $(document).ready(); estas líneas:
$("#selector").bind("select_node.jstree", function (e, data) {
   alert("Has seleccionado el nodo "+data.rslt.obj.attr("id"));
 });
Donde data.rslt.obj es el elemento de la estructura DOM al que hace referencia el clic sobre el nodo seleccionado.
Haced vuestros experimentos, comentadnos qué tal y no dejéis de plantear vuestras dudas.
