2009-08-19 18 views
6

Ho la fisarmonica che funziona bene con il pageload, tuttavia nell'interazione dell'utente con alcuni elementi della pagina, sto usando ajax per ricostruire l'HTML della fisarmonica. Quindi, provo a reinizializzare nuovamente la fisarmonica conreinizializzare fisarmonica jquery su callback

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

ma ... non sembra che stia prendendo.

Il nuovo blocco di HTML reso non applica le regole di fisarmonica. Invece rimane aperto come una grande lista.

Ho anche provato setTimeout() per ri-chiamare la fisarmonica solo nel caso in cui stia tentando di inizializzarsi prima che l'HTML reso sia restituito nel callback.

Il HTML che viene visualizzato nella callback è esattamente uguale a quella della pageload (con eccezione per le aggiunte DOM che si verificano quando il metodo della fisarmonica è efficace)

risposta

14

distruggere la fisarmonica prima ripopolandola con i dati.

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

grazie, che risolto. Lo apprezzo molto. – aimlessWonderer

+2

Nessun problema. Ho avuto lo stesso identico problema con il componente dell'interfaccia utente di dialogo e la correzione era la stessa. Devi distruggere esplicitamente tutto (per ora) in jquery-ui per ottenere i componenti in buono stato. Questo dovrebbe essere documentato da qualche parte! –