2013-01-25 97 views
0

Tl; dr:滾動到底部以獲得更簡單的解釋。Jquery UI嵌套式手風琴的問題;標題選項會干擾嵌套的手風琴

我想我認爲我有一個稍微有點獨特的問題。首先,我已經看過了互聯網/谷歌,包括網站,以及在提出這個問題時的建議。

回到手邊的話題,我正在生成嵌套的一系列手風琴,其中嵌套量是動態生成的。也就是說,底層物品可以有多少父母沒有限制,因此它不是一個選項去'.acord1,.acord2,.acord3'等。

對於問題..手風琴中的一些頭是底層項目,他們沒有孩子,沒有附上手風琴。

下面的示例html不包含上述項目,因爲它重現了所面臨的問題,這是當添加header:選項(我用它排除前面提到的項目)時,它會觸發頂級域名當一個孩子被點擊時關閉它。

的下面是一個測試情況下,我已經設法再現用最少的代碼:

<div class="acord"> 
    <h3>test1</h3> 
    <div class="acord"> 
     <h3>test2</h3> 
     <div>test2cont</div> 
    </div> 
    <h3 class="item">test3</h3> 
</div> 
$(".acord").accordion({ 
    header: "h3:not(.item)", 
    heightStyle: "content", 
    active: false, 
    collapsible: true, 
}); 

如果上述是tl;dr,指定與嵌套手風琴頭選項不工作,因爲兒童手風琴的父母(被點擊),然後關閉。

Js Fiddle

有沒有解決方案?

回答

1

以下是我管理的變通方法。這很醜陋,但還有其他一些東西可以完成工作。如果有人比刪除jQuery手風琴標題的圖標和填充和單擊功能有更好的想法,請回答這個問題。在此之前:

$(".acord").accordion({ 
    heightStyle: "content", 
    active: false, 
    collapsible: true, 
    changestart: function (event, ui) { 
     if ($(event.currentTarget).hasClass("item")) { 
      event.preventDefault(); 
      $(event.currentTarget).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     } 
    } 
}); 

編輯:

由於在jQuery bug tracker的人過來,這已經解決了一個更好的解決方案:

$(".acord").accordion({ 
    header: "> h3:not(.item)", //this line 
    heightStyle: "content", 
    active: false, 
    collapsible: true 
});