Estoy desarrollando una página web en la que estoy usando el Framework Bootstrap de Twitter y sus Bootstrap Tabs JS . Funciona muy bien, excepto por algunos problemas menores, uno de los cuales es que no sé cómo ir directamente a una pestaña específica desde un enlace externo. Por ejemplo:
<a href="facility.php#home">Home</a>
<a href="facility.php#notes">Notes</a>
debe ir a la pestaña Inicio y a la pestaña Notas respectivamente cuando se hace clic en los enlaces desde una página externa
javascript
html
tabs
twitter-bootstrap
mraliks
fuente
fuente
Respuestas:
Aquí está mi solución al problema, quizás un poco tarde. Pero tal vez podría ayudar a otros:
fuente
window.scrollTo(0, 0);
para asegurarme de que la ventana siempre se desplace hacia arribaSyntax error, unrecognized expression: .nav-tabs a[href=#tab-2]
. Resuelto usando stackoverflow.com/questions/12131273/…ACTUALIZAR
Para Bootstrap 3, cambie
.on('shown', ...)
a.on('shown.bs.tab', ....)
Esto se basa en la respuesta @dubbe y esta respuesta SO aceptada . Maneja el problema con
window.scrollTo(0,0)
no funcionar correctamente. El problema es que cuando reemplaza el hash de url en la pestaña que se muestra, el navegador se desplazará a ese hash ya que es un elemento en la página. Para evitar esto, agregue un prefijo para que el hash no haga referencia a un elemento de página realEjemplo de uso
Si tiene un panel de pestañas con id = "mytab", debe colocar su enlace de esta manera:
fuente
$('.nav-tabs a[href="'+hash.replace(prefix,"")+'"]').tab('show');
puede activar un
click
evento en el enlace de la pestaña correspondiente:fuente
Esta es una implementación mejorada de la solución de Dubbe que evita el desplazamiento.
fuente
Si bien la solución JavaScript proporcionada puede funcionar, tomé una forma ligeramente diferente que no requiere JavaScript adicional, pero sí requiere lógica en su opinión. Crea un enlace con un parámetro de URL estándar, como:
Luego simplemente detecta el valor de activeTab para escribir 'class = "active"' en el apropiado
<li>
Pseudocódigo (implementar en consecuencia en su idioma). Tenga en cuenta que he configurado la pestaña 'inicio' como activa predeterminada si no se proporciona ningún parámetro en este ejemplo.
fuente
No soy un gran admirador de si ... más; Así que tomé un enfoque más simple.
No aborda el desplazamiento al hash solicitado; pero debe ello?
fuente
Para Bootstrap 3:
https://jsfiddle.net/DTcHh/6638/
fuente
Esto funciona en Bootstrap 3 y mejora las 2 respuestas principales de dubbe y flynfish al integrar también la respuesta de GarciaWebDev (que permite parámetros de URL después del hash y es directamente de los autores de Bootstrap en el rastreador de problemas de github):
fuente
'shown'
debería ser de'shown.bs.tab'
acuerdo con los documentos: getbootstrap.com/javascript/#tabs-events . Estoy desconcertado sobre por qué, pero cuando intenté editar tu publicación, fue rechazada ...Este código selecciona la pestaña derecha según el #hash y agrega el #hash correcto cuando se hace clic en una pestaña. (esto usa jquery)
En Coffeescript:
o en JS:
fuente
Aprovechando la solución de Demircan Celebi; Quería que la pestaña se abriera al modificar la url y la pestaña abierta sin tener que volver a cargar la página desde el servidor.
fuente
Este código de http://github.com/twitter/bootstrap/issues/2415#issuecomment-4450768 me funcionó perfectamente.
fuente
@flynfish + @Ztyx solución que uso para pestañas anidadas:
los niños deben tener class = "anidado"
fuente
Se me ocurrió una solución que usa el URL hash o localStorage dependiendo de la disponibilidad de este último con el siguiente código:
fuente
Te sugiero que uses el código proporcionado por los autores de Bootstrap en su rastreador de problemas en GitHub :
Puede encontrar en el enlace del problema más información sobre por qué no decidieron apoyar eso.
fuente
Intenté un par de formas discutidas anteriormente y terminé con la siguiente solución de trabajo, solo copie y pegue en su editor para probar. Para probar simplemente cambie el hash a la bandeja de entrada, a la bandeja de salida, a componer en la url y presione la tecla Intro.
Espero que esto te ahorre tiempo.
fuente
Esto es lo que hice, realmente simple, y siempre que sus enlaces de pestañas tengan una ID asociada, puede obtener el atributo href y pasarlo a la función que muestra el contenido de la pestaña:
Luego, en su URL, puede agregar el hash como algo así como: # tab_tab1, la parte 'tab_' se elimina del hash en sí para que la ID del enlace de la pestaña real en las pestañas de navegación (tabid1) se coloque después de esto, por lo que su url se vería algo así como: www.midominio.com/index.php#tab_tabid1.
Esto funciona perfecto para mí y espero que ayude a alguien más :-)
fuente
Esta es mi solución para manejar pestañas anidadas. Acabo de agregar una función para verificar si la pestaña activa tiene una pestaña principal para ser activada. Esta es la función:
Y se puede llamar así (según la solución de @ flynfish):
Esta solución me funciona bastante bien en este momento. Espero que esto pueda ser útil para otra persona;)
fuente
Tuve que modificar algunos bits para que esto funcione para mí. Estoy usando Bootstrap 3 y jQuery 2
fuente
Simplemente inserte este código en su página:
fuente
Acabo de tener este problema, pero necesitaba manejar múltiples niveles de pestañas. El código es bastante feo (ver comentarios), pero hace su trabajo: https://gist.github.com/JensRantil/4721860 Esperemos que alguien más lo encuentre útil (¡y siéntase libre de proponer mejores soluciones!).
fuente
Combinando partes de otras respuestas, aquí hay una solución que puede abrir muchos niveles de pestañas anidadas:
fuente
$('.nav-tabs li a').click( function(e) { history.pushState( null, null, $(this).attr('href') );});
el JavaScript encima de su código.Si le importa a alguien, el siguiente código es pequeño y funciona perfectamente, para obtener un único valor hash de la URL y mostrar que:
lo que hace es recuperar la identificación y dispara el evento click. Simple.
fuente
Hago algo así para enlaces con ajax
#!#
(por ejemplo, / test.com #! # Test3) pero puedes modificarlo como quierasEjemplo con una página simple en Github aquí
fuente
Sé que este hilo es muy antiguo, pero dejaré aquí mi propia implementación:
Tenga en cuenta que estoy usando un
nav-
prefijo de clase para navegar por los enlaces.fuente