Сверните дочерние элементы во вложенном jQuery Accordion - PullRequest
2 голосов
/ 17 августа 2010

При использовании Аккордеона jQuery (во вложенном виде) я хочу убедиться, что при щелчке / открытии родительского элемента все открытые дочерние элементы закрываются / сворачиваются. Я не уверен, какой селектор (ы) я должен использовать при попытке сделать это. До сих пор я пытался сфальсифицировать событие изменения с параметром «activ», установленным в «false», но это просто автоматически закрывает любой открываемый элемент.

Если у меня есть только 1 вложенный аккордеон, моя инициализация jquery выглядит следующим образом:

$(".accordion").accordion({
            active: false, collapsible: true, autoHeight: false, animated: 'swing'
        });

        $(".child-accordion").accordion({
            active: false, collapsible: true, autoHeight: false, animated: 'swing',
            change: function(event, ui) { $(".child-accordion").accordion("activate", false); }
        });

где .child-accordion - это вложенный экземпляр. Мне нужно, чтобы что-нибудь под .child-accordion было закрыто при открытии члена .accordion.

1 Ответ

5 голосов
/ 17 августа 2010
$(".accordion").accordion({
    collapsible: true,
    autoHeight: false,
    animated: 'swing',
    changestart: function(event, ui) {
        child.accordion("activate", false);
    }
});

var child = $(".child-accordion").accordion({
    active:false,
    collapsible: true,
    autoHeight: false,
    animated: 'swing'
});

Причина, по которой ваша версия не работала, двоякая

  1. Ваше событие изменения должно быть на родителе, потому что именно тогда вы хотите, чтобы дети свернули

  2. Вам нужно сделать событие changestart, потому что, когда вы устанавливаете activate в значение false, главное, что он делает, это toggle текущий «видимый» раздел дочернего элемента, но когда change событие инициирует родительский объект, дочерний элемент уже скрыт, поэтому он ничего не делает.

РЕДАКТИРОВАТЬ : вот рабочая версия этого http://jsfiddle.net/ryleyb/YPpEn/

...