2009-08-19 4 views
6

У меня есть гармония, работающая отлично на pageload, однако при взаимодействии с некоторыми элементами на странице я использую ajax для восстановления HTML-аккордеона. Затем я попытаюсь снова инициализировать аккордеон с помощьюre-initialize jquery accordion on callback

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

но ... похоже, это не воспринимается.

Новый блок визуализации HTML не применяет правила аккордеона. Вместо этого он просто остается открытым как большой список.

Я даже попробовал setTimeout() для повторного вызова аккордеона просто, если он пытался инициализировать, прежде чем возвращенный HTML будет возвращен в обратном вызове.

HTML, который оказывается в функции обратного вызова является точно такой же, как и у PageLoad (за исключением к DOM дополнения, которые возникают, когда метод аккордеона эффективен)

ответ

14

уничтожить Accordian, прежде чем заселив его с данными.

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

спасибо, что исправил его. Я очень ценю это. – aimlessWonderer

+2

Нет проблем. У меня была такая же проблема с компонентом интерфейса диалога, и исправление было таким же. Вы должны явно уничтожить все (на данный момент) в jquery-ui, чтобы получить компоненты в хорошем состоянии. Это должно быть где-то зарегистрировано! –