在嵌套的jQuery Accordion中汇总子元素

时间:2010-08-17 17:21:24

标签: jquery jquery-ui accordion

当使用jQuery的Accordion(以嵌套方式)时,我想确保在单击/打开父元素时,关闭/汇总任何打开的子元素。我不确定在尝试这样做时我应该使用哪个选择器。到目前为止,我已经尝试将“激活”设置为false来修改一个更改事件,但这只会使任何打开的元素自动关闭。

假设我只有一个嵌套的手风琴,我的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是嵌套实例。当.accordion的成员被打开时,我需要关闭.child-accordion下的任何东西。

1 个答案:

答案 0 :(得分:5)

$(".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事件在父项上触发时,该子项已被隐藏,因此它不会执行任何操作。

  3. 编辑:这是http://jsfiddle.net/ryleyb/YPpEn/

    的工作版本