Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/01/2016, 09:17
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

Bien, entendido lo anterior empezamos otra cosa.

Ahora tenemos tres botones que son los que abren los paneles, en vez de las tabs por defecto de Bootrap.

Así que ahora tenemos tres botones dentro de un div.
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>
  23.   <div class="buttons-tab-nav">
  24.        <a href="#" class="btn btn-default " tab-to-open="tab1">Abrir tab1</a>
  25.        <a href="#" class="btn btn-default " tab-to-open="tab2">Abrir tab2</a>
  26.        <a href="#" class="btn btn-default " tab-to-open="tab3">Abrir tab3</a>
  27.   </div>


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