2010-08-17 95 views
2

当我使用jQuery的Accordion(以嵌套方式)时,我想确保当父元素被点击/打开时,任何打开的子元素都被关闭/卷起。我不确定在尝试执行此操作时应使用哪个选择器。到目前为止,我已尝试将“activate”设置为false来操作更改事件,但这只是简单地使任何自动打开的元素关闭。滚动嵌套jQuery中的子元素手风琴

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

+0

一个工作版本应该更改事件是对.accordion类,而不是.. – Fosco 2010-08-17 17:24:21

+0

我试过了,似乎没有产生任何影响? – nkirkes 2010-08-17 17:31:22

回答

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事件时,t他的孩子已经隐藏起来,所以它什么都不做。

编辑:这里有这个http://jsfiddle.net/ryleyb/YPpEn/

+0

完美!这正是我所期待的。 – nkirkes 2010-08-17 21:34:15