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

nki*_*kes 2 jquery jquery-ui accordion

当使用jQuery的Accordion(以嵌套方式)时,我想确保在单击/打开父元素时,关闭/汇总任何打开的子元素.我不确定在尝试这样做时我应该使用哪个选择器.到目前为止,我已经尝试将"激活"设置为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); }
        });
Run Code Online (Sandbox Code Playgroud)

其中.child-accordion是嵌套实例.当.accordion的成员被打开时,我需要关闭.child-accordion下的任何东西.

Ryl*_*ley 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'
});
Run Code Online (Sandbox Code Playgroud)

你的版本无法正常工作的原因是双重的

  1. 您的更改事件需要在父级上,因为这是您希望孩子们汇总的时候

  2. 您需要创建事件,changestart因为当您设置activate为false时,它所做的主要事情是togglechange节点中当前的"可见"部分,但是当事件在父节点上触发时,子节点已经被隐藏,所以它不会任何东西.

编辑:这是这个http://jsfiddle.net/ryleyb/YPpEn/的工作版本