Активация другого раздела JQuery Accordion - PullRequest
2 голосов
/ 31 мая 2011

Я бы очень признателен за любую помощь в решении этой проблемы.

Это значительно упрощенная версия более длинного набора php-кода, но она все еще имеет проблему, поэтому я исключил все остальное, какпричина.

На главной странице создается аккордеон.HTML, который следует, генерируется включенным php-файлом.

Аккордеон работает отлично, единственная проблема состоит в том, что иногда я захочу загрузить второй раздел (Раздел W) вместо первого (Раздел R) какэто поведение по умолчанию.Я пробовал несколько решений, которые я нашел в Интернете, но ни одно из приведенных ниже не работает.Любая помощь будет принята с благодарностью.

Код: http://pastebin.com/WQfctKVx

<script type='text/javascript'>
    $(function() {
        $( "#k_accordion" ).accordion({
            autoHeight: false,
            navigation: true
        });
    });
</script>

<div id="k_accordion">
    <h3 id="sectionR"><a href="#sectionR">Section R</a></h3>
    <div>
        Content for Section R
    </div>

    <h3 id="sectionW"><a href="#sectionW">Section W</a></h3>
    <div>
        Content for Section W
    </div>

    <script language=javascript> $( "#k_accordion" ).accordion( "activate", 2);</script>
    <script language=javascript>// Gives 'is not a function' error:     $("#k_accordion").activate(2); </script>
    <script language=javascript>// $( "#k_accordion" ).accordion( "activate", "sectionW");</script>
    <script language=javascript>// $( "#k_accordion" ).accordion( "activate", "#k_accordion > div:has(#sectionW) > h3"); </script>
    <script language=javascript>// $( "#k_accordion" ).accordion( "activate", $("#h3-sectionW")); </script>
</div>

1 Ответ

5 голосов
/ 31 мая 2011

Опция active - это то, что вам нужно:

activeType: Boolean или Integer
По умолчанию: 0

Какая панель в данный момент открыта.

Поддерживается несколько типов:

  • Boolean : настройка active на false свернетсявсе панели.Для этого требуется, чтобы collapsible option было истинным.
  • Целое число : Индекс активной панели (открытой), начинающейся с нуля.Отрицательное значение выбирает панели, идущие назад от последней панели.

Если вы хотите, чтобы вторая панель была открыта (например), тогда при создании аккордеона установите active: 1:

$( "#k_accordion" ).accordion({
    autoHeight: false,
    navigation: true,
    active: 1
});

Или вы можете использовать метод option для изменения открытой панели после создания аккордеона:

$('#k_accordion').accordion('option', 'active', 1);

Или вы можете использовать метод activate:

$("#k_accordion").accordion('activate', 1);

Просто запомните две вещи при использовании опции active или метода activate:

  1. Они хотят индексы панели, а не id атрибуты.
  2. ИндексыНачинается с нуля (точно так же как массивы JavaScript), поэтому вторая панель имеет индекс 1, а не 2, который вы пытались использовать.
...