Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/01/2016, 06:51
kraneok
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Bootstrap, link to tabs

Hola. Desde mi punto de vista esto no tiene sentido, ya que las tab propiamente hacen esta función, es decir, cuando pulsas en cada tab se muestra.

Para hacerlo como lo necesitas lo primero que debes saber es que el componente de Bootstrap añade la clase .active tanto al elemento <li> (que es el título de la pestaña) como al div con el que está relacionada esa pestaña.


Código HTML:
Ver original
  1. <ul id="tab" class="nav nav-tabs" role="tablist">
  2.     <li>
  3.         <a id="tab1-tab" aria-controls="tab1" data-toggle="tab" role="tab" href="#tab1" aria-expanded="true">tab1</a>
  4.   </li>
  5.     <li>
  6.         <a id="tab2-tab" aria-controls="tab2" data-toggle="tab" role="tab" href="#tab2" aria-expanded="true">tab2</a>
  7.     </li>
  8.     <li>
  9.         <a id="tab3-tab" aria-controls="tab3" data-toggle="tab" role="tab" href="#tab3" aria-expanded="true">tab3</a>
  10.     </li>
  11. </ul>
  12. <div id="tabContent" class="tab-content">
  13.     <div id="tab1" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  14.         Contenido tab1
  15.     </div>
  16.     <div id="tab2" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  17.         Contenido tab2
  18.     </div>
  19.     <div id="tab3" class="tab-pane fade" aria-labelledby="profile-tab" role="tab-panel">
  20.         Contenido tab3
  21.     </div>
  22. </div>

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var $tabsLinks  = $("#tab li a"); // Obtenemos todos los tag a que lanzan la apertura de un panel tab
  3.     var $tabsPanels = $("#tabContent > div"); // Estos son los paneles que contienen el contenido que están relacionados con cada tab, podemos relacionarlos nosotros mediante el atributo de a aria-controls
  4.  
  5.         // Capturamos el evento click de todos los a(tabs)
  6.         $tabsLinks.on ('click', function (event) {
  7.             event.preventDefault();
  8.  
  9.             // Antes de hacer nada, eliminamos la clase active de cualquier elemento a o div que esté dentro de $tabsLinks o $tabsPanels
  10.             // es algo drástico y se puede optimizar almacenando en una variable el ultimo elemento activo
  11.             // por rapidez lo hago así
  12.             $tabsLinks.removeClass("active");
  13.             tabsPanels.removeClass("active");
  14.  
  15.             // Obtenemos el atributo aria-controls del elemento a que ha sido pulsado.
  16.             // Ya tenemos el div que vamos a mostra, en este caso puede ser: tab1, tab2 o tab3
  17.             var pressedElement = $(this).attr ('aria-controls');
  18.  
  19.             // Entonces, ahora solo buscamos el div que tiene ese id y le añadimos la clase active
  20.             // y luego, se la añadimos también al elemento a que ha sido pulsado.
  21.             // El añadirle ahora la clase al elemento a en vez de hacerlo antes es por hacerlo mas legible el código
  22.           $("#" + pressedElement).addClass ("active");
  23.             $(this).addClass("active");
  24.         });
  25. </script>