2010-06-05 11 views
5

tengo este ajax pestañas de navegación jQuery plugin que he creado mediante la ayuda de CSS-Tricks.com y la jQuery hashchange event plug-in (detecta los cambios de hash en los navegadores que don lo soporto).

El código es poco tiempo para publicar aquí, pero es algo como esto:

Parte 1) Cuando se hace clic en una pestaña, se pone el atributo href de esa ficha y agregarlo a la barra de navegadores de navegación como '#tab_name': window.location.hash = $(this).attr("href");

Parte 2) Cuando los cambios en la barra de navegación (cambio de hash), se hace el cambio href así: window.location.hash.substring(1); (subcadena es conseguir sólo 'tab_name' sin el '#'), y luego llama a la función ajax para obtener la información para mostrar.

Quiero desencadenar automáticamente el plugin para cargar la primera pestaña cuando se accede a la página, por lo que al principio del código que puse:

if (window.location.hash === '') { // If no '#' is in the browser navigation bar 
    window.location.hash = '#tab_1'; // Add #tab_1 to the navigation bar 
    $(window).trigger('hashchange'); // Trigger a hashchange so 'Part 2' of the plugin calls the ajax function using the '#tab_1' added 
} 

Los probles es que funciona en FF, pero no en Chrome, quiero decir, todo funciona, pero parece que el $(window).trigger('hashchange'); no funciona porque no aparece la primera pestaña ...

¿Alguna sugerencia?

Nota: funcionó hace algún tiempo, pero de repente no (tal vez actualización de Chrome).

Respuesta

2

Sospecho que está intentando desencadenar el evento de una forma que no es del agrado del navegador. ¿Dónde está definido su controlador para "hashchange"? Le sugiero que intente vincularlo al

$('body').bind('hashchange', function() { ... }) 

en lugar de "ventana". Incluso eso podría darle problemas en los navegadores WebKit; si es así, puede crear un <div> para ajustar el contenido de su cuerpo y vincularlo.

+0

Bueno, el hashchange se define así: $ (ventana) .bind ('hashchange', function() {... – Jonathan

+3

Encontré el problema, estaba llamando $ (ventana) .trigger ('hashchange') ; antes de que se definiera hashcnage en $ (ventana) .bind ('hashchange', function() {... ¡Gracias por señalarme la dirección! – Jonathan

Cuestiones relacionadas