Continuando con vamos con la segunda entrega trabajando con base al tema anterior te recomiendo lo leas rápidamente para entrar en contexto.
Recordarás que la vez pasada se hizo un ejemplo básico con el Mecanismo de Pestañas “Tabs” y trabajando con cuatro (4) de ellas como ejemplo. Ahora queremos inicializar el contenido de una pestaña o tab desde HTML pero la información debe ser devuelta por el servidor. Vamos a utilizar un servidor con PHP básico; nada de frameworks ni cosas complejas eso queda para que lo apliques en tus proyectos.
El objetivo es modificar el contenido del primer tab o pestaña, usando las acciones de “url” y“load”. Con base al código final del anterior post ():
<div id="tabs">
<ul>
<li><a href="#tab1">Tab 1</a></li>
<li><a href="#tab2">Tab 2</a></li>
<li><a href="#tab3">Tab 3</a></li>
<li><a href="#tab4">Tab 4</a></li>
</ul>
<div id="tab1">HTML5facil BLog de la comunidad HTML5</div>
<div id="tab2">Otro Hola Mundo pero en jQueryUI</div>
<div id="tab3">Lorem ipsum</div>
<div id="tab4">Contenido pestaña 4</div>
</div>
<script> $("#tabs").tabs (); </script>
Este es el resultado del post anterior (esto como una guía de los resultados).
Como trabajan los eventos asociados en las opciones de los tabs en jQueryUI
Anteriormente hablamos de las opciones que se utilizan para la gestión de tabs, tales como seleccionar, añadir y eliminar. Estas opciones reciben el parámetro del evento, seguido por el objeto tab que describe el tab o pestaña donde ocurrirá el evento. Este objeto tab se compone de las siguientes propiedades:
- index: El índice del tab o pestaña en la que ocurre el evento (el número cero “0” indica la primera pestaña)
- panel:Es el que corresponde al contenido del tab o pestaña.
| Opción | Función |
|---|---|
| options.select | select (event, tab) método es llamado en la selección de un tab o pestaña |
| options.show | show (event, tab) este es el método que se llama cuando se quiere hacer visible el contenido de una pestaña |
| options.add | add (event, tab) adicionar tabs o pestañas a la lista |
| options.remove | remove (event, tab) borrar tabs o pestañas a la lista |
| options.enable | enable (event, tab) habilitar o activar un tab o pestaña indicada |
| options.disable | disable (event, tab) no habilitar un tab o pestaña especifico |
| options.load | load (event, tab) es llamado cuando el contenido de una pestaña se va a cargar y/o un tab o pestaña sera agregado en la lista de tabs a través de Ajax. |
Ya veremos donde se aplica estos conceptos.
Método Tabs (“acción”, parametro)
Esta nueva forma del método tab de modifica el comportamiento de las pestañas después de su creación. Permite a través de JavaScript, acciones en las pestañas, como la selección, desactivación, agregar o quitar un tab. La acción se especifica como una cadena en el primer argumento (por ejemplo, “add” para añadir una nueva pestaña), mientras que el o los argumentos que siguen se refieren a los parámetros de esta acción. Estos eventos se procesan por las opciones ya comentadas, y se pueden ver en la siguiente tabla:
| Método | Función |
|---|---|
| tabs(“add”, “#id”, title, index) | Añade una pestaña a la posición indicada por el índice, por defecto desde 0. El resto de las pestañas después de la ficha adicional tendrán sus números de índice aumenta en 1. “#id” identificador de un elemento en que se asocia con el contenido de la pestaña. El parámetro “title” es el título de la pestaña.
Si el parámetro de índice no se especifica, la pestaña se añade al final de la lista. |
| tabs (“remove”, index) | Retira la pestaña especificada y el contenido asociado. |
| tabs (“disable”, index) | La pestaña indicada ya no esta activa ni visible |
| tabs (“select”, index) | Selecciona la pestaña se especificada, adémas el contenido de esa pestaña se hace visible. |
| tabs (“url”, index, url) | Asociar el contenido de la pestaña con la dirección URL especificada en el parámetro url. Ajax recuperar el contenido de la pestaña en la llamada a las pestañas del método tabs (“load”, index). |
| tabs (“load”, index) | Sirve para que Ajax recupere el contenido de la pestaña, con la dirección indicada por tabs (“URL”, index, url) |
| tabs (“rotate”, duration, repeat) | Selecciona cada pestaña de acuerdo a un período de tiempo especificado (en milisegundos). Si el campo repetición “repeat” es verdadera, el ciclo se repite, de lo contrario se realiza una sola vez (por defecto) |
| tabs (“destroy”) | Retire la gestión de pestañas por parte jQueryUI. Tabs lo vuelve HTML simple, sin la clase CSS o la gestión de eventos. |
| tabs (“length”) | Devuelve el número de pestañas del primer elemento de la lista para el selector que esta usando. |
Creando Tabs o pestañas dinámicas
El ejercicio para entender como agregamos la funcionalidad de la sección anteriormente descritas es agregando un tab o pestaña de forma dinámica. Vamos a utilizar el método tabs(“add”, “#id”, title, index) de la siguiente manera:
</pre>
$("#tabs").tabs({
fx : { opacity:toggle},</pre>
}).tabs("add", "#tab5", "Tab 5");
$("<i>Añadiendo Tabs dinamicos</i>").appendTo("#tab5");
Cuando revisa el ejemplo encuentra dos operaciones que tal vez no entienda
tabs({fx : { opacity:toggle},})
Aquí utilizamos la opción fx de dandole un efecto de aparecer de manera gradual al texto interno de los tabs o pestañas.
El otro elemento no conocido o tratado que hace parte más de es la manera en que ingresamos datos dentro del tab recién creado.
$("<i>Añadiendo Tabs dinamicos</i>").appendTo("#tab5");
El resultado es el siguiente:
Ahora Si! modificando el contenido de nuestros tabs o pestañas con Ajax
Listo vamos modificar el contenido de un tab o pestaña desde el HTML devuelto por el servidor. Vamos a utilizar un servidor PHP en mi caso uno basado en pero puedes usar , ,o cualquier servidor.
Vamos a modificar el contenido de la primer tab o pestaña, el índice o index 0, usando el atributo “url” y las acciones de cargar o “load”:
</pre>
$("#tabs").tabs({
}).tabs("add", "#tab5", "Tab 5");
$("<i>Añadiendo Tabs dinamicos</i>").appendTo("#tab5");
$("#tabs").tabs({
}).tabs("url",0, "./lab.php").tabs("load", 0);
<pre>
y luego creando el archivo lab.php con la siguientes información:
</pre>
<?php
$txt = "<p> Contenido desde el servidor </p>";
$txt = utf8_encode($txt);
echo $txt;
?>
<pre>
Adicionando un Tab y añadiendo información desde el servidor con el metodo add de Tabs
En este punto vamos adicionar un tab o pestaña de manera dinámica utilizando las opciones de “eventos asociados” en especial el “options.load” con el contenido del mismo a través de AJAX.
</pre>
$("#tabs").tabs({
fx : { opacity : "toggle" },
add: function(event, tab){
$(tab.panel).load("./lab.php");
}
}).tabs("add", "#tab6", "Tab 6");
<pre>
Que encontramos de raro en este ejemplo; estamos utilizando el método tabs(options):
en las lineas de código:
</pre>
add: function(event, tab){
$(tab.panel).load("./lab.php");
}
<pre>
Usamos la propiedad “panel” de método tabs(options) para añadir información a la pestaña. Dando como resultado algo como esto:
Para tener en cuenta
el código parcial que llevamos hasta este momento de los tabs con es el siguiente para que no se sienta perdido:
</pre>
<div id="tabs">
<ul>
<li><a href="#tab1">Tab 1</a></li>
<li><a href="#tab2">Tab 2</a></li>
<li><a href="#tab3">Tab 3</a></li>
<li><a href="#tab4">Tab 4</a></li>
</ul>
<div id="tab1">HTML5facil BLog de la comunidad HTML5</div>
<div id="tab2">Otro Hola Mundo pero en jQueryUI</div>
<div id="tab3">Lorem ipsum</div>
<div id="tab4">Contenido pestaña 4</div>
</div>
<script> $("#tabs").tabs (); </script>
<script>
$("#tabs").tabs({
}).tabs("add", "#tab5", "Tab 5");
$("<i>Añadiendo Tabs dinamicos</i>").appendTo("#tab5");
$("#tabs").tabs({
}).tabs("url",0, "./lab.php").tabs("load", 0);
$("#tabs").tabs({
fx : { opacity : "toggle" },
add: function(event, tab){
$(tab.panel).load("./lab.php");
}
}).tabs("add", "#tab6", "Tab 6");
</script>
Por ultimo transmitiendo información a el servidor vía AJAX
Este ejemplo muestra cómo transmitir la información al servidor a través de Ajax par modificar el contenido de la pestaña correspondiente. Se envía el nombre y apellido de una persona y lo mostrará en la pestaña como contenido devuelto por el servidor. La información transmitida por (nombre y apellido) se inserta en la opción ajaxOptions en la propiedad de datos:
</pre>
$("#tabs").tabs({
ajaxOptions : {data: {name: "Alejandro", nickname: "alejo8591"}}
}).tabs("add", "#tab7", "Tab 7").tabs("url", 6, "./lab1.php").tabs("load", 6);
<pre>
Recuerda que si quieres saber más sobre es necesario verificar la documentación de , lo único diferente aquí es el segundo dato de la opción tabs(“url”, 6, “./lab1.php”) que el 6 se refiere al número de tab que quiere afectar.
Modificamos el archivo escrito en PHP “lab.php” con la siguiente información para interactuar:
</pre>
<?php
$name = $_REQUEST["name"];
$nickname = $_REQUEST["nickname"];
$name = utf8_decode($name);
$nickname = utf8_decode($nickname);
$txt = "<p>Contenido desde servidor</p>";
$txt .= "Name : " . $name . "<br />";
$txt .= "Nickname : " . $nickname . "<br />";
$txt = utf8_encode($txt);
echo $txt;
?>
<pre>
El resultado obtenido es algo como esto:
Y el código completo aquí esta
<pre><div id="tabs">
<ul>
<li><a href="#tab1">Tab 1</a></li>
<li><a href="#tab2">Tab 2</a></li>
<li><a href="#tab3">Tab 3</a></li>
<li><a href="#tab4">Tab 4</a></li>
</ul>
<div id="tab1">HTML5facil BLog de la comunidad HTML5</div>
<div id="tab2">Otro Hola Mundo pero en jQueryUI</div>
<div id="tab3">Lorem ipsum</div>
<div id="tab4">Contenido pestaña 4</div>
</div>
<script> $("#tabs").tabs (); </script>
<script>
$("#tabs").tabs({
}).tabs("add", "#tab5", "Tab 5");
$("<i>Añadiendo Tabs dinamicos</i>").appendTo("#tab5");
$("#tabs").tabs({
}).tabs("url",0, "./lab.php").tabs("load", 0);
$("#tabs").tabs({
fx : { opacity : "toggle" },
add: function(event, tab){
$(tab.panel).load("./lab.php");
}
}).tabs("add", "#tab6", "Tab 6");
$("#tabs").tabs({
ajaxOptions : {data: {name: "Alejandro", nickname: "alejo8591"}}
}).tabs("add", "#tab7", "Tab 7").tabs("url", 6, "./lab1.php").tabs("load", 6);
</script></pre>
Conclusiones
- ofrece una herramienta básica pero muy util para trabajar con tabs o pestañas ademas de un “pull” de opciones para modificar tanto la pestaña como su contenido.
- La manera de interactuar con AJAX es buena para aquellas personas que no han tenido experiencia con este herramienta para interactuar con datos desde el servidor.
- Las diferentes maneras y opciones para interactuar le lleva a pensar cuando utilizar alguna de esta y no ceñirse a solo una sino la indicada.
Código del Post
El repositorio lo encuentras en en la cuenta oficial de html5facil con el nombre de html5facil los archivos que nos importan son:
- tabsjqueryui.html
- lab.php
- lab1.php
También es importante que sepas si le haces fork o clone los archivos de la libreria no están en el repositorio es necesario que los descargues.






Genial! Gracias por el tuto! =D Me ha servido muuuucho!
Muchas gracias a ti por tu comentario eso es lo que buscamos en la comunidad, que todos aprendamos. 😉
Hola, es posible cargar dentro de los Tabs Javascript ?
Lo digo porque estoy intentando meter JTable (http://www.jtable.org) dentro de las pestañas y no lo consigo.
Un cordial saludo.
Buenos dias amigo, tengo un problema , al colocar el codigo del tabs en una plantilla CSS, el tabs se deforma verticalmente, agradesco su ayuda para solucionarlo. El codigo esta en:
https://www.dropbox.com/sh/epjm5eb3gxel1hy/eLzKmRfCOk
Gracias por consultarnos 😉 de 3 a 4 días estaré revisando tus archivo, pues el volumen de trabajo que tenemos es bastante. Seguimos en contacto!!