无法让jquery手风琴关闭所有面板

时间:2011-07-20 17:54:27

标签: javascript jquery menu

我正在使用手风琴脚本,有些页面有子页面(关于,方法,我们的工作),有些则没有。如果用户在没有子菜单的页面上,我不希望显示另一个子菜单(这是当前的情况)

网站: http://thegoodgirlsnyc.com/test/new/index3_7.php

标题中的jquery:

 ddaccordion.init({
    headerclass: "headerbar", //Shared CSS class name of headers group
   contentclass: "submenu", //Shared CSS class name of contents group
    revealtype: "click", //Reveal content when user clicks or onmouseover the     header? Valid value: "click", "clickgo", or "mouseover"
    mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds    before header expands onMouseover
    collapseprev: true, //Collapse previous content (so only one open at any time)? true/false
    defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
    onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
    animatedefault: false, //Should contents open by default be animated into view?
    persiststate: true, //persist state of opened contents within browser session?
    toggleclass: ["", "selected"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
    togglehtml: ["", "", ""], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
animatespeed: "normal", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
    //do nothing
},
onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
    //do nothing
}

})

和js文件:http://thegoodgirlsnyc.com/test/new/js/ddaccordion.js

我以为我可以添加一个新的headerclass - “headerclass2”并将其定义为headerbar2,因为没有下拉类名的菜单项是.headerbar2并更改实际js文件中的行#37 - 41来表示:

collapseall:function(headerclass2){ //PUBLIC function to collapse all headers based on their shared CSS classname
    var $headers=this.headergroup[headerclass2]
    this.contentgroup[headerclass2].filter(':visible').each(function(){
        $headers.eq(parseInt($(this).attr('contentindex'))).trigger("evt_accordion")
    })
},

当用户点击没有子菜单的链接时,如何关闭所有子菜单?

1 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是由于设置persiststate: true,而导致状态持续存在。

看起来发生的事情是,不是打开点击的标题栏(即沙龙)并关闭其他标题栏,而是直接进入链接页面,因为没有子菜单。由于你是持久的状态,打开的标题栏在新页面上保持打开状态。

因此,我的建议是使用defaultexpanded选项打开您要在特定页面上打开的特定标题栏。然后,您可以关闭persiststate并让页面自己处理应展开的标题栏。这可能是一项更多的工作,但它可以让您在访问页面时默认打开哪些菜单。