无法让jquery手风琴关闭所有面板 [英] Trouble getting jquery accordion to close all panels
问题描述
我正在处理手风琴脚本,有些页面包含子页面(关于,方法,我们的工作),有些则没有.如果用户在页面上没有子菜单,则我也不希望另一个子菜单显示(这是当前情况)
I'm working off of an accordion script, some pages have sub pages (about, approach, our work) and some do not. If the user is on a page that there is no sub menu, I don't want another sub menu to show either (This is the current case)
网站: http://thegoodgirlsnyc.com/test/new/index3_7.php
标题中的jquery:
The jquery in the the header:
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中的行以表示:
I thought I could add a new headerclass - "headerclass2" and define it as headerbar2 because the menu items that do not have drop down's class name is .headerbar2 and change the line in the actual js file # 37 - 41 to say:
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")
})
},
当用户单击没有子菜单的链接时,如何关闭所有子菜单?
How can I get all of the sub menus to close when the user clicks on a link with no sub menus?
推荐答案
我认为您遇到的问题是,由于设置了persiststate: true,
,该状态一直存在.
I think the issue you're running into is that the state is being persisted because of the setting: persiststate: true,
.
看起来好像发生了什么,而不是打开单击的标题栏(即沙龙)并关闭其他标题栏,而是直接进入了链接页面,因为没有子菜单.而且由于您要保持状态,所以打开的标题栏在新页面上保持打开状态.
It looks like what happens is, rather than opening the clicked headerbar (ie. Salons) and closing the other headerbars, it just goes straight to the linked page since there's no submenu. And since you're persisting the state, the open headerbar is staying open on the new page.
所以,我的建议是使用defaultexpanded
选项,以打开要在特定页面上打开的特定标题栏.然后,您可以关闭persiststate
并让页面自己处理应扩展哪个标题栏.可能需要做更多的工作,但是它将使您可以更好地控制在访问页面时默认情况下打开的菜单.
So, my suggestion is to use the defaultexpanded
option, to open the specific headerbar you want opened on the specific page. You could then turn off persiststate
and let the pages themselves handle which headerbar should be expanded. It may be a little more work, but it will give you fine control over which menus are open by default when visiting the pages.
这篇关于无法让jquery手风琴关闭所有面板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!