Запустить jquery аккордеонное меню по событию? - PullRequest
10 голосов
/ 12 июня 2010

Можно ли открыть следующую панель в меню аккордеона jquery с помощью отдельного события onclick кнопки?То есть вместо нажатия на заголовок, чтобы открыть другую панель, используйте кнопку, не подключенную к аккордеону.

Ответы [ 2 ]

14 голосов
/ 12 июня 2010

Да, просто позвоните activate на аккордеоне, как это:

$("#myaccordion").accordion("activate", 1 );

Где 1 - индекс, который вы хотите открыть.

Вы можете получить текущий ноль-на основе индекса активной панели, вызвав:

var index = $("#myaccordion").accordion('option','active');

Итак, взяв оба этих элемента вместе, мы можем открыть следующий элемент одним кликом:

$("#mybutton").click(function(e){
  e.preventDefault();
  var acc   = $("#myaccordion"),
      index = acc.accordion('option','active'),
      total = acc.children('div').length,
      nxt   = index + 1;

  if (nxt >= total) {
     nxt = 0; // Loop around to the first item
  }

  acc.accordion('activate', nxt);
})
13 голосов
/ 26 сентября 2013

В версиях JQuery UI 1.10 или выше функция .activate устарела в пользу использования метода 'option', поэтому альтернативный подход с использованием предыдущего ответа будет:

$("#button").click(function(){
    var index = $("#accordion").accordion('option','active');
    var total = $("#accordion").children('div').length;
    index++;

    // include restart same as previous answer     
    if (index >= total) {
        index = 0;
    }

    $("#accordion").accordion("option", "active", index);

}
...