【问题标题】:JQuery accordion: reverting back to previous style for “closed” stateJQuery 手风琴:恢复到“关闭”状态的先前样式
【发布时间】:2011-07-25 17:35:51
【问题描述】:

我正在使用一个简单的 JQuery 手风琴,它使用 DIV 而不是典型的 UL 结构。

  • 当您单击菜单 DIV 时,会打开相应的特定面板 DIV。
  • 菜单 DIV 的样式发生变化(变为灰色)以表明它处于活动状态。
  • 当您再次单击它时,面板 DIV 将关闭。
  • 发生这种情况时,我希望 menu DIV 恢复到以前的样式。
  • 目前它只是保持灰色。

谁能帮忙?

这是 JSFiddle 上的代码:http://jsfiddle.net/Gaelen/aTR2b/6/

JavaScript:

$(document).ready(function() {
    $("#menu1").data("panelId", "#collapse_photography");
    $("#menu2").data("panelId", "#collapse_fineart");
    $("#menu3").data("panelId", "#collapse_architecture");
    $("#menu4").data("panelId", "#collapse_graphdesign");
    $("#menu5").data("panelId", "#collapse_infographics");
    $("#menu6").data("panelId", "#collapse_3dviz");

    $("#menu1, #menu2, #menu3, #menu4, #menu5, #menu6").click(function() {
        $(".menu_active").removeClass('menu_active');
        $(this).addClass('menu_active');
        var first = true;
        var panelId = $(this).data("panelId");
        $(".class1").not(panelId).slideUp(function() {
            if (first) {
                first = false;
                $(panelId).slideToggle(400);
            }
        });
    });
});

CSS:

.class1 {width:200px; height:200px; border:1px solid black; display:none;}
.menu_active{ background: grey;}
#collapse_photography {background:red; margin-bottom:10px;}
#collapse_fineart {background:red; margin-bottom:10px;}
#collapse_architecture {background:red; margin-bottom:10px;}
#collapse_graphdesign {background:red; margin-bottom:10px;}
#collapse_infographics {background:red; margin-bottom:10px;}
#collapse_3dviz {background:red; margin-bottom:10px;}
#menu1 {cursor:pointer; display:block; width:200px; border:1px solid black; margin-bottom:10px;}
#menu2 {cursor:pointer; display:block; width:200px; border:1px solid black; margin-bottom:10px;}
#menu3 {cursor:pointer; display:block; width:200px; border:1px solid black; margin-bottom:10px;}
#menu4 {cursor:pointer; display:block; width:200px; border:1px solid black; margin-bottom:10px;}
#menu5 {cursor:pointer; display:block; width:200px; border:1px solid black; margin-bottom:10px;}
#menu6 {cursor:pointer; display:block; width:200px; border:1px solid black; margin-bottom:10px;}

HTML:

<div id="menu1"><a href="#">Photography</a></div>
<div id="collapse_photography" class="class1">Content 1</div>
<div id="menu2">Fine Art</div>
<div id="collapse_fineart" class="class1">Content 2</div>
<div id="menu3">Architecture</div>
<div id="collapse_architecture" class="class1">Content 3</div>
<div id="menu4">Graphic + Web Design</div>
<div id="collapse_graphdesign" class="class1">Content 4</div>
<div id="menu5">Information Graphics</div>
<div id="collapse_infographics" class="class1">Content 5</div>
<div id="menu6">3D Visualisation</div>
<div id="collapse_3dviz" class="class1">Content 6</div>

【问题讨论】:

    标签: jquery html accordion sliding


    【解决方案1】:

    尝试使用.toggleClass()

        $(".menu_active").not(this).removeClass('menu_active');
        $(this).toggleClass('menu_active');
    

    更新jsfiddle

    【讨论】:

    • 太棒了!非常感谢马克!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多