jQuery Accordion — Настройка «Активной панели» во время загрузки

#jquery #jquery-ui #jquery-ui-accordion

#jquery #jquery-пользовательский интерфейс #jquery-пользовательский интерфейс-аккордеон

Вопрос:

Возникла странная проблема, из-за которой я «думаю», что знаю, в чем проблема, но не знаю, как ее решить.

У меня есть страница, содержащая аккордеон jQueryUI, я пытаюсь установить «Активировать» во время выполнения, но я могу заставить это работать, только если я поставлю «Alert ();» раньше!

У меня есть несколько вызовов getJSON, которые заполняют содержимое аккордеона (определяет, сколько панелей в нем должно быть), и как только это будет завершено, необходимо перейти к соответствующей панели.

Фактический вызов здесь:

 function jumpToAccordionDate(d,m,y){
var el3=$('#h' d    m    y);
$('#accordion').accordion('activate',el3);}
  

Ранее, во время создания аккордеона, я уже задавал идентификатор элемента H3 следующим образом:

 $('#accordion').append('<h3 id="h'   dd   '"><a href="#">'   cDate   '</a></h3><div id="div'   dd   '"></div>').accordion('destroy').accordion();
  

Есть ли какой-нибудь способ, возможно, дождаться, пока аккордеон полностью завершит рендеринг в DOM, прежде чем я вызову jumpTo accordiondate, или есть альтернатива получше?

Ответ №1:

Я думаю, что create событие может решить вашу проблему с синхронизацией. Документация немного расплывчата, но вы могли бы использовать ее следующим образом:

 $("#accordion").accordion({
    create: function() {
        jumpToAccordionDate(...);
    }
});