【问题标题】:Trouble getting jquery accordion to close all panels无法让 jquery 手风琴关闭所有面板
【发布时间】:2011-07-21 04:20:57
【问题描述】:

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

网站: 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")
    })
},

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

【问题讨论】:

  • 你说的是菜单吧?

标签: javascript jquery menu


【解决方案1】:

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

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

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

【讨论】:

  • 我不清楚如何使用 defaultexpand 选项。我已经在指定位置输入了页面,但它似乎不起作用。
  • @MLS1984:好吧,根据this page defaultexpanded = "默认情况下应该以[index1,index2等]格式打开的内容的索引,其中0=第 1 个内容,1=第 2 个内容等。[] 表示默认情况下不应打开任何内容。”我相信这意味着如果你通过了,比如[3],那么沙龙应该是“开放的”。我认为它的映射如下:关于 = 0,方法 = 1,我们的工作 = 2,沙龙 = 3,说出来 = 4。我希望这会有所帮助。
  • 感谢您的帮助。您的解决方案部分有效,但是当您转到应打开子菜单的页面时,它们现在已关闭。
  • @MLS1984:抱歉,我没有明确说明,但您必须为所有应该展开的页面添加一个适用的defaultexpanded 值。
  • 我不知道该怎么做。抱歉,我是新手
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多