当使用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下的任何东西。
答案 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'
});
您的版本无法正常工作的原因是双重的
您的更改活动需要在父母身上,因为那是您希望孩子们汇总的时候
您需要制作事件changestart
,因为当您将activate
设置为false时,它所做的主要事情是toggle
孩子当前“可见”部分,但是当change
事件在父项上触发时,该子项已被隐藏,因此它不会执行任何操作。