2012-06-18 59 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