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

发布于 2024-11-25 07:38:23 字数 2520 浏览 1 评论 0原文

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

该站点: 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

我想我可以添加一个新的标头类 - “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")
    })
},

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

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)

The site:
http://thegoodgirlsnyc.com/test/new/index3_7.php

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
}

})

And the js file: http://thegoodgirlsnyc.com/test/new/js/ddaccordion.js

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

゛清羽墨安 2024-12-02 07:38:23

我认为您遇到的问题是由于以下设置而导致状态被持久化:persiststate: true,

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

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

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.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文