2009-08-19 8 views
6

J'ai l'accordéon qui fonctionne bien sur pageload, mais lors de l'interaction de l'utilisateur avec certains éléments de la page, j'utilise ajax pour reconstruire le code HTML de l'accordéon. Ensuite, j'essaie de réinitialiser à nouveau l'accordéon avecré-initialiser l'accordéon jquery sur rappel

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

mais ... il ne semble pas prendre.

Le nouveau bloc de HTML rendu n'applique pas les règles d'accordéon. Au lieu de cela, il reste ouvert comme une grande liste.

J'ai même essayé setTimeout() pour rappeler l'accordéon juste au cas où il essayait de s'initialiser avant que le HTML rendu ne soit retourné dans le rappel.

Le code HTML qui est rendu dans le rappel est exactement la même que celle de la pageload (à l'exception des additions DOM qui se produisent lorsque le procédé d'accordéon est efficace)

Répondre

14

Détruire l'accordéon avant la repopulation avec des données.

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

merci, qui l'a fixé. J'apprécie vraiment cela. – aimlessWonderer

+2

Pas de problème. J'ai eu exactement le même problème avec le composant de l'interface de dialogue, et le correctif était le même. Vous devez explicitement détruire tout (pour le moment) dans jquery-ui pour que les composants soient dans un bon état. Cela devrait être documenté quelque part! –

Questions connexes