#jquery #jquery-ui #accordion
#jquery #jquery-пользовательский интерфейс #аккордеон
Вопрос:
Я был бы действительно признателен за любую помощь в решении этой проблемы.
Это значительно упрощенная версия более длинного набора 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. Будет лучше, если вы вставите код непосредственно в свой ответ (с отступом в 4 пробела), чтобы нам было удобнее читать, и ваш вопрос не исчезнет, если это сделает pastebin. Кроме того, мы можем выполнить поиск в SO.
2. О, спасибо, что сделали это. Я вставил его изначально, но отредактировал, потому что он не отображался должным образом. Я посмотрю, как правильно это добавить.
Ответ №1:
active
Опция — это то, что вам нужно:
activeType: логическое значение или целое число
По умолчанию: 0Какая панель открыта в данный момент.
Поддерживается несколько типов:
- Логическое значение: установка
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
метода:
- Им нужны индексы панели, а не
id
атрибуты. - Индексы основаны на нуле (точно так же, как массивы JavaScript), поэтому вторая панель имеет индекс 1, а не 2, который вы пытались использовать.
Комментарии:
1. Большое спасибо за вашу помощь. Добавление ‘active: 1’ к созданию аккордеона сработало. Два других варианта не сработали, и я понятия не имею, почему, но сейчас это работает, так что я очень благодарен, поскольку я застрял на этом в течение нескольких часов.