2010-08-17 45 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