Проблемы с получением JQuery гармошкой, чтобы закрыть все панели - PullRequest
0 голосов
/ 20 июля 2011

Я работаю над сценарием аккордеона, некоторые страницы имеют подстраницы (о, подходе, нашей работе), а некоторые нет. Если пользователь находится на странице, на которой нет подменю, я не хочу, чтобы отображалось другое подменю (это текущий случай)

Сайт: 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")
    })
},

Как я могу закрыть все подменю, когда пользователь нажимает на ссылку без подменю?

1 Ответ

0 голосов
/ 21 июля 2011

Я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что состояние сохраняется из-за установки: persiststate: true,.

Похоже, что происходит, а не открывается панель заголовка, по которой щелкнули (т.е.Салоны) и закрывая другие заголовки, он просто идет прямо на связанную страницу, так как нет подменю.И так как вы сохраняете состояние, открытая панель заголовков остается открытой на новой странице.

Итак, я предлагаю использовать опцию defaultexpanded, чтобы открыть конкретную панель заголовков, которую вы хотите открыть на определеннойстр.Затем вы можете отключить persiststate и позволить самим страницам обрабатывать заголовок, который должен быть расширенЭто может быть немного больше работы, но это даст вам точный контроль над тем, какие меню открываются по умолчанию при посещении страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...