Инструменты Jquery (аккордеон/табы) + LiveQuery

Я использую инструменты jquery + livequery. У меня есть горизонтальный аккордеон с 4 элементами. При начальной загрузке страницы они создаются PHP-скриптом, так что аккордеон прекрасно работает - открывается первая вкладка, и все скользит нормально. (как в этом примере: http://flowplayer.org/tools/demos/tabs/accordion-horizontal.html)

У меня есть событие таймера, которое перезагружает элементы аккордеона через JSON. Как только это происходит - вкладки не активируются. Я пытался прикрепить событие livequery после перезагрузки аккордеона, но не могу понять.

Структура такая:

<div id="accordion">
<div class="accordion_element>[tab content]</div>
<div class="accordion_element>[tab content]</div>
<div class="accordion_element>[tab content]</div>
<div class="accordion_element>[tab content]</div>
</div>

Я активирую аккордеон:

$("#accordion").tabs("#accordion .div_body", {
    tabs: '.img_bgr', 
    effect: 'horizontal'
});

И это работает как шарм - первая вкладка расширяется, другие вкладки кликабельны и расширяются при нажатии. Затем каждую минуту я запускаю:

$.getJSON("accordion.php", function(json){
    $.each(json, function(key, val) {
    //-------parse json here and append each accordion_item (I empty the accordion prior)
    $('#accordion').append(accordion_item);
    });
});

Итак, на данный момент у меня есть красивый аккордеон, но он не активирован - это просто табы.

Как прикрепить событие livequery к следующему, чтобы оно влияло на все будущие обновления #accordion?

$("#accordion").tabs("#accordion .div_body", {
    tabs: '.img_bgr', 
    effect: 'horizontal'
});

по сути, мне нужно иметь возможность назначать .live (или livequery) для .tabs, которые будут контролировать все клики и т. д.

на этой странице - http://flowplayer.org/tools/demos/tabs/accordion-horizontal.html
представьте, что 3 изображения + открытый текст перезагружаются с помощью json, а .tabs больше не влияет.

так (что, конечно, не работает)

$("#accordion").live( '.tabs', function(){
"#accordion .div_body", {
tabs: '.img_bgr', 
effect: 'horizontal'
};

person vroomer    schedule 13.03.2011    source источник
comment
у меня был ответ здесь - но он исчез .. понятия не имею, сделал ли я это - если я сделал - извините. to response ›.tabs — это функция, которая поставляется с инструментами jquery и самостоятельно обрабатывает все клики и события. поэтому в приведенной выше функции - $(#element_that_contains_tabs).tabs (#элемент, который будет отображаться при нажатии триггера%, { tabs: %trigger%, effect} если я назначу щелчок в реальном времени на .class -> он запускает несколько раз и беспорядок с .tabs, поэтому у меня есть вещи по всей странице =) Я пытался назначить его #unique_id, но я заново изобретаю функцию.   -  person vroomer    schedule 14.03.2011


Ответы (1)


Вы пробовали это?

$("#accordion").livequery(function() {
  $(this).tabs("#accordion .div_body", {
    tabs: '.img_bgr', 
    effect: 'horizontal'
});
person Stefan    schedule 16.03.2012