Инструменты Jquery (аккордеон / вкладки) + LiveQuery - PullRequest
1 голос
/ 13 марта 2011

Я использую инструменты 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'
};

1 Ответ

0 голосов
/ 16 марта 2012

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

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