Подтвердить что ты не робот

Как программно открыть панель содержимого jQuery

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

Мне удалось найти следующий элемент, подобный этому $(this).parent().next(), но имеющий проблемы с запуском действительного действия.

<div id="accordion">
   <h3><a href="#">Item 1</a></h3>
   <div>Item 1 content<br />
      <div onclick="$(this).parent().next().show();">NEXT</div>
   </div>
   <h3><a href="#">Item 2</a></h3>
   <div>Item 2 content<br />
   </div>
</div>
4b9b3361

Ответ 1

Если это виджет jQuery UI Accordion, вы должны использовать его встроенные методы.

var $accordion = $("#accordion").accordion();
function openNextAccordionPanel() {
    var current = $accordion.accordion("option","active"),
        maximum = $accordion.find("h3").length,
        next = current+1 === maximum ? 0 : current+1;
    // $accordion.accordion("activate",next); // pre jQuery UI 1.10
    $accordion.accordion("option","active",next);
}

HTML:

<div onclick="openNextAccordionPanel();">NEXT</div>

Ответ 2

Чтобы код работал отлично, вы должны изменить свой html следующим образом

<div id="accordion">
   <h3><a href="#">Item 1</a></h3>
   <div class='showable'>Item 1 content<br />
      <div onclick="$(this).parent('.showable').hide().next().show();">NEXT</div>
   </div>
   <h3><a href="#">Item 2</a></h3>
   <div class='showable'>Item 2 content<br />
   </div>
</div>

Ответ 3

У моего аккордеона есть только один контент div (индекс 0), а при обратной передаче я регистрирую script, чтобы снова открыть аккордеон после его отдыха ($ ( "# accordion" ). accordion ({collapsible: true, active: true}); $( "# accordion" ). show();), чтобы расположить макет, где пользователь перед тем, как запустить обратную передачу.

HTML:

<div id="accordion" style="display: none">
    <h3>ACCORDION TITLE</h3>
    <div class="col-lg-12" style="overflow: hidden">

Функция Javascript:

 $("#accordion").accordion({ active: 0 });

 $('.ui-accordion-content').css('height', 'auto');