2009-08-19 21 views
6

Tengo el acordeón funcionando bien en la carga de la página, sin embargo, al interactuar el usuario con algunos elementos de la página, estoy usando ajax para reconstruir el código HTML del acordeón. Luego, trato de reinicializar el acordeón nuevamente conreinicializar el acordeón jquery en la devolución de llamada

$('#accordion').accordion({ 
     active: false, 
     autoHeight: false, 
     clearStyle: true, 
     collapsible: true, 
     header: 'h3' 
    }); 

pero ... no parece estar tomando.

El nuevo bloque de HTML prestado no aplica las reglas de acordeón. En cambio, simplemente permanece abierto como una lista grande.

Incluso he intentado setTimeout() para volver a llamar al acordeón simplemente en el caso de que intentara inicializar antes de que se devuelva el HTML representado en la devolución de llamada.

El HTML que se representa en la devolución de llamada es exactamente el mismo que el de la pageload (con excepción a las adiciones de DOM que se producen cuando el método de acordeón es efectiva)

Respuesta

14

Destruir al acordeón antes de la repoblación con datos.

$('#accordion').accordion('destroy'); 
+0

gracias, eso lo arregló. Realmente lo aprecio. – aimlessWonderer

+2

No hay problema. Tuve exactamente el mismo problema con el componente de interfaz de usuario de diálogo, y la solución fue la misma. Tienes que destruir todo explícitamente (por ahora) en jquery-ui para que los componentes estén en buen estado. Esto debe ser documentado en alguna parte! –

Cuestiones relacionadas