2010-03-31 22 views
8

Las pestañas de IU de JQuery se implementan mediante anclas con nombre en una lista desordenada. Al pasar sobre una de las fichas se puede ver esto en el enlace que se muestra a los pies del navegador:Pestañas de IU de JQuery: ¿Cómo puedo navegar directamente a una pestaña desde otra página?

http://mysite/product/3/#orders 

anterior sería la pestaña "órdenes", por ejemplo. JQuery obviamente intercepta el clic en este ancla y abre la pestaña en su lugar.

Sin embargo, si marque el enlace de arriba o lo enlace desde otra parte del sitio, la página no se abrirá en la pestaña específica.

En el bloque de inicialización de pestañas estaba considerando poner algún código que busque un ancla nombrada en la URL y, si encuentra una, hace una búsqueda de índice de las pestañas y llama a la selección sobre ella. Esto significa que seguirá funcionando con JS apagado.

¿Pero hay una manera más fácil/mejor/mejor?

+0

El control de ficha JS no trabajaría con JS volvió de puesto que es todos js – hunter

+0

Interesante - 1.3.2. Me refiero a actualizar por un tiempo, pero me voy por la política de "no está roto, no lo arregles". Parece que tengo una buena razón para actualizar ahora (aunque no estoy esperando la nueva prueba) –

+0

@Hunter - no las pestañas no funcionarían pero el comportamiento seguiría siendo correcto. Si JS estaba apagado, el enlace lo llevaría a la parte correcta de la página. –

Respuesta

9

Encontrado este ejemplo here:

if(document.location.hash!='') { 
    //get the index from URL hash 
    tabSelect = document.location.hash.substr(1,document.location.hash.length); 
    $("#my-tabs").tabs('select',tabSelect-1); 
} 
+0

perfecto, lo envolví en una función de ayuda y lo llamé desde el evento de carga del control de pestañas, gracias –

+1

Una cosa que esto no hace es retener la información de hash entre pestañas. Entonces, si obtuve de www.page.com # 1 a www.page.com # 2 desde dentro de la misma página, no cambiará la pestaña. –

+0

@Zach - ¿dónde estabas el año pasado? – hunter

3

En las versiones de jQuery UI anteriores a la 1.8 (no incluidas) es más o menos la forma en que tendrías que hacerlo. La extensión de pestañas (AFAIK) no sabe cambiar según el ancla con la que se inicializa (cuando se carga la página), por lo que debe hacer ese bit manualmente (en el evento listo, por supuesto).

Como another answer indica, la nueva versión de las pestañas en jQuery UI 1.8 supports bookmarking out of the box.

+0

gracias, solo quería estar seguro de que no me faltaba nada obvio. Debe ser un requisito común –

+0

FWIW la demostración que tienen en el sitio de jQuery UI parece inicializarse correctamente en el ancla. – R0MANARMY

+0

@ R0MANARMY - Le sugiero que agregue una respuesta que diga "esto funciona en la última versión". Podría marcarlo entonces –

5

partir de la versión 1.8 jQuery UI soporta esta funcionalidad. Véase el ejemplo aquí:

  1. Second tab active by default
  2. Third tab active by default
+0

gracias, salí con la versión estable por el momento, pero actualizaré cuando puede –

+0

BTW jQueryUI 1.8 es la versión estable actual (consulte la sección * ¿Qué pasa con jQuery UI 1.7? *). http://blog.jqueryui.com/2010/03/jquery-ui-18/ – R0MANARMY

+0

extraño, todavía no han actualizado la página principal: Último (1.8: jQuery 1.4+) Estable (1.7.2: jQuery 1.3+) - Estoy usando jquery 1.3 también, así que estaría actualizando ambos al mismo tiempo. –

0

utilizo el plugin Sesión de lograr esto en una clase de ficha personalizada

Cuestiones relacionadas