2012-06-18 49 views
1

我有一個自定義的手風琴腳本,我正試圖適應另一個網站。我需要打開它後才能關閉div,但我無法弄清楚如何修改它。調整手風琴以允許當前內容隱藏

這裏是我的腳本:

$(".accordionHidden").hide(); 

// Bind to Button click Event // 
$("a.accordionHeading").bind("click", function(e){ 
    e.preventDefault(); 

    // Set New Target from Button data-target Attribute // 
    var $target = $("."+$(this).data("target")); 

    // Prevent Slide Up/Down of Current Content // 
    if ($(".accordionHidden:visible").get(0) != $target.get(0)){ 

     // Slide Up Content if Visible // 
     if ($(".accordionHidden:visible").length){ 
      $(".accordionHidden").filter(":visible").slideUp("fast", function(){ 
       $target.slideDown("fast"); 
      }); 
     } 
     else { 
      $target.slideDown("fast"); 
     } 
    } 
}); 

我也需要能夠有多個項目同時打開,不知道這是否腳本可以在瞬間做到這一點。

DEMO:http://jsfiddle.net/7W2je/2/(添加第二手風琴,需要有兩個(或更多)在開放一次)

+0

我們應該猜到是什麼標記? – undefined

+0

標記起來非常複雜,所以我不想在這裏發佈1000行代碼......我將更新一個鏈接到一個現場演示,雖然它應該從腳本中指定的類中清楚。 – JacobTheDev

+1

基本的手風琴html樹怎麼會變得複雜?沒有看到基本的標記會導致大量盲目的猜測來編寫簡單的遍歷。發表演示 – charlietfl

回答

1

嘗試slideToggle()方法:

$(".accordionHidden").hide(); 

// Bind to Button click Event // 
$("a.accordionHeading").bind("click", function(e){ 
    e.preventDefault(); 

    // Set New Target from Button data-target Attribute // 
    $("."+$(this).data("target")).slideToggle(); 
    if ($("a.accordionHeading").text() == 'Maximize') { 
     $("a.accordionHeading").text("Show Less Info"); 
     $("a.accordionHeading").removeClass("minimize").addClass('maximize'); 
    } else { 
     $("a.accordionHeading").addClass("minimize").removeClass('maximize').text('Maximize'); 
    } 

}); 

http://jsfiddle.net/7W2je/4/

+0

關閉,但文本/類更改不能按預期方式工作,我無法解決問題。我以前認爲我對jQuery非常好,在嘗試任何手風琴之前,對我來說毫無意義。 – JacobTheDev

+0

@Rev是什麼問題? – undefined

+0

不幸的是,該網站的NDA,所以我不能只是張貼代碼...在同一頁面上的多個手風琴,它改變每個按鈕的名稱,而不是點擊。另外,這些類似乎以某種方式交換(所以當它被最大化時,按鈕變成'.minimize',當它最小化時,按鈕變成'.maximize'。) – JacobTheDev