刷新后如何让我的网站记住我的Jquery手风琴菜单状态?

时间:2014-01-29 00:26:23

标签: javascript jquery html css ajax

我找到嵌套Jquery手风琴的代码并且像魅力一样工作,但是当我点击侧边栏中的菜单或子菜单(重定向到不同网址的链接)时,我发现了一个大问题,然后网站不记得哪个菜单或子菜单应该在刷新后显示或隐藏(默认状态是隐藏除1级别之外的所有内容)。是否有任何选项可以让我的菜单在刷新之前记住最后状态?非常感谢你的帮助。

HTML:

<ul>
    <li>
        <a href="foo1.php">level 2</a>
        <ul>
            <li><a href="foo2.php">a</a></li>
            <li><a href="foo3.php">b</a></li>
        </ul>
    </li>
    <li>
        <a href="foo4.php">level 2</a></li>
        <ul>
            <li>
                <a href="foo5.php">level 3</a>
                <ul>
                    <li><a href="foo6.php">c</a></li>
                    <li><a href="foo7.php">d</a></li>
                </ul>
            </li>

            <li><a href="foo8.php">e</a></li>
            <li><a href="foo9.php">f</a></li>
        </ul>
    </li>
</ul>

Jquery的:

$('ul li ul').hide();
$('ul li').click(function(ev) {
  $(this).find('>ul').slideToggle();
  ev.stopPropagation();
});

真实HTML:

<ul class="arrows_list1-1">
   <h3>Naše produkty</h3>
   <div class="menu-produkty-container">
      <ul id="menu-produkty" class="menu">
         <li id="menu-item-97" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-has-children menu-item-97">
            <a href="http://www.odsavacky.cz/wpccategories/akce/">Akce</a>
            <ul class="sub-menu" style="display: none;">
               <li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-114">
                  <a href="http://www.odsavacky.cz/wpccategories/akcni-ceny/">Akční ceny</a>
               </li>
               <li id="menu-item-98" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-98">
                  <a href="http://www.odsavacky.cz/wpccategories/novinky/">Novinky</a>
               </li>
            </ul>
         </li>
         <li id="menu-item-63" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories current-wpccategories-ancestor current-menu-ancestor current-menu-parent current-wpccategories-parent menu-item-has-children menu-item-63">
            <a href="http://www.odsavacky.cz/wpccategories/spotrebni-material/">Spotřební materiál</a>
            <ul class="sub-menu" style="display: none;">
               <li id="menu-item-66" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-has-children menu-item-66">
                  <a href="http://www.odsavacky.cz/wpccategories/kyslikova-terapie/">Kyslíková terapie</a>
                  <ul class="sub-menu" style="display: none;">
                     <li id="menu-item-67" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-67">
                        <a href="http://www.odsavacky.cz/wpccategories/kyslikove-masky-a-nosni-sondy/">Kyslíkové masky a nosní sondy</a>
                     </li>
                     <li id="menu-item-176" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-176">
                        <a href="http://www.odsavacky.cz/wpccategories/masky-inhalacni/">Masky inhalační</a>
                     </li>
                     <li id="menu-item-68" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-68">
                        <a href="http://www.odsavacky.cz/wpccategories/mikronebulizatory/">Mikronebulizátory</a>
                     </li>
                     <li id="menu-item-179" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-179">
                        <a href="http://www.odsavacky.cz/wpccategories/prutokomery/">Průtokoměry</a>
                     </li>
                     <li id="menu-item-180" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-180">
                        <a href="http://www.odsavacky.cz/wpccategories/redukcni-ventily/">Redukční ventily</a>
                     </li>
                     <li id="menu-item-178" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-178">
                        <a href="http://www.odsavacky.cz/wpccategories/prislusenstvi-k-tep-nebulizatorum/">Příslušenství k tep. nebulizátorům</a>
                     </li>
                     <li id="menu-item-175" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-175">
                        <a href="http://www.odsavacky.cz/wpccategories/kyslikove-zvlhcovace-prislusenstvi/">Kyslíkové zvlhčovače, příslušenství</a>
                     </li>
                     <li id="menu-item-181" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-181">
                        <a href="http://www.odsavacky.cz/wpccategories/studene-nebulizatory-prislusenstvi/">Studené nebulizátory, příslušenství</a>
                     </li>
                  </ul>
               </li>
               <li id="menu-item-73" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-has-children menu-item-73">
                  <a href="http://www.odsavacky.cz/wpccategories/resuscitace-intubace/">Resuscitace, intubace</a>
                  <ul class="sub-menu" style="display: none;">
                     <li id="menu-item-189" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-189">
                        <a href="http://www.odsavacky.cz/wpccategories/laryngoskopy/">Laryngoskopy</a>
                     </li>
                     <li id="menu-item-188" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-188">
                        <a href="http://www.odsavacky.cz/wpccategories/laryngealni-masky/">Laryngeální masky</a>
                     </li>
                     <li id="menu-item-190" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-190">
                        <a href="http://www.odsavacky.cz/wpccategories/masky-resuscitacni/">Masky resuscitační</a>
                     </li>
                     <li id="menu-item-192" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-192">
                        <a href="http://www.odsavacky.cz/wpccategories/rucni-resuscitatory/">Ruční resuscitátory</a>
                     </li>
                     <li id="menu-item-191" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-191">
                        <a href="http://www.odsavacky.cz/wpccategories/prislusenstvi-defibrilace/">Příslušenství defibrilace</a>
                     </li>
                  </ul>
               </li>
               <li id="menu-item-71" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-has-children menu-item-71">
                  <a href="http://www.odsavacky.cz/wpccategories/odsavani/">Odsávání</a>
                  <ul class="sub-menu" style="display: none;">
                     <li id="menu-item-182" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-182">
                        <a href="http://www.odsavacky.cz/wpccategories/odsavaci-cevky/">Odsávací cévky</a>
                     </li>
                     <li id="menu-item-183" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-183">
                        <a href="http://www.odsavacky.cz/wpccategories/odsavaci-hadice/">Odsávací hadice</a>
                     </li>
                     <li id="menu-item-184" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-184">
                        <a href="http://www.odsavacky.cz/wpccategories/odsavaci-lahve/">Odsávací lahve</a>
                     </li>
                     <li id="menu-item-185" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-185">
                        <a href="http://www.odsavacky.cz/wpccategories/odsavaci-vaky/">Odsávací vaky</a>
                     </li>
                     <li id="menu-item-186" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-186">
                        <a href="http://www.odsavacky.cz/wpccategories/saci-filtry/">Sací filtry</a>
                     </li>
                     <li id="menu-item-187" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-187">
                        <a href="http://www.odsavacky.cz/wpccategories/stopventily/">Stopventily</a>
                     </li>
                  </ul>
               </li>
               <li id="menu-item-70" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-70">
                  <a href="http://www.odsavacky.cz/wpccategories/narkotizace-umela-plicni-ventilace/">Narkotizace, umělá plicní ventilace</a>
               </li>
               <li id="menu-item-64" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories current-menu-item menu-item-64">
                  <a href="http://www.odsavacky.cz/wpccategories/diagnostika/">Diagnostika</a>
               </li>
               <li id="menu-item-65" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-65">
                  <a href="http://www.odsavacky.cz/wpccategories/ekg-prislusenstvi/">EKG – příslušenství</a>
               </li>
               <li id="menu-item-69" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-69">
                  <a href="http://www.odsavacky.cz/wpccategories/monitoring-defibrilace/">Monitoring, defibrilace</a>
               </li>
               <li id="menu-item-72" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-72">
                  <a href="http://www.odsavacky.cz/wpccategories/operacni-svetla/">Operační světla</a>
               </li>
            </ul>
         </li>
         <li id="menu-item-75" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-has-children menu-item-75">
            <a href="http://www.odsavacky.cz/wpccategories/zdravotnicke-pristroje/">Zdravotnické přístroje</a>
            <ul class="sub-menu" style="display: none;">
               <li id="menu-item-76" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-76">
                  <a href="http://www.odsavacky.cz/wpccategories/kyslikova-terapie-zdravotnicke-pristroje/">Kyslíková terapie</a>
               </li>
               <li id="menu-item-77" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-77">
                  <a href="http://www.odsavacky.cz/wpccategories/resuscitace-intubace-zdravotnicke-pristroje/">Resuscitace, intubace</a>
               </li>
            </ul>
         </li>
         <li id="menu-item-74" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-74">
            <a href="http://www.odsavacky.cz/wpccategories/vyukovy-program/">Výukový program</a>
         </li>
         <li id="menu-item-62" class="menu-item menu-item-type-taxonomy menu-item-object-wpccategories menu-item-62">
            <a href="http://www.odsavacky.cz/wpccategories/nahradni-dily/">Náhradní díly</a>
         </li>
      </ul>
   </div>
</ul>

Real Jquery:

$('.arrows_list1-1 li ul').hide();
    $('.arrows_list1-1 li').click(function(ev) {
        $(this).find('>ul').slideToggle();
        ev.stopPropagation();
    });

5 个答案:

答案 0 :(得分:4)

我们会检查当前的网址并打开:

  • 当前网址的相应级别
  • 所有家长.sub-menu
  • 他的兄弟.sub-menu

代码:

$('.arrows_list1-1 li ul').hide();
$('.arrows_list1-1 li').click(function(ev) {
    $(this).find('>ul').slideToggle();
    ev.stopPropagation();
});

var url = window.location.href;
var $current = $('.arrows_list1-1 li a[href="' + url + '"]');
$current.parents('.sub-menu').slideToggle();
$current.next('.sub-menu').slideToggle();

答案 1 :(得分:2)

将最后一个标签存储在会话变量中。请参阅此处的MSDN文档:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage

答案 2 :(得分:2)

首先,给你的手风琴的每个级别一个类名,如下所示。另外,设置手风琴每个级别的onclick以设置所点击内容的cookie,这样我们就可以跟踪手风琴的位置。

<ul class="accordion">
  <li>
    <a href="foo1.php" class="lvl1" onClick="setcookie(this)">level 1</a>
    <ul>
      <li class="lvl1" onClick="setcookie(this)"><a href="foo2.php">a</a></li>
      <li class="lvl1" onClick="setcookie(this)"><a href="foo3.php">b</a></li>
    </ul>
  </li>
  <li>
  <a href="foo4.php" class="lvl2" onClick="setcookie(this)">level 2</a>
    <ul>
      <li class="lvl2">
        <a href="foo5.php" class="lvl2" onClick="setcookie(this)">level 3</a>
        <ul>
            <li class="lvl3"><a href="foo6.php">c</a></li>
            <li><a href="foo7.php">d</a></li>
        </ul>
      </li>

      <li><a href="foo8.php">e</a></li>
      <li><a href="foo9.php">f</a></li>
    </ul>
  </li>
</ul>
function setCookie(e) {
  document.cookie="activeAccordion=" + $(e).attr('class');
}

接下来,在页面加载时,读取该cookie并将活动手风琴设置为我们在cookie中设置的值。

$(function(){
  var activeAccordion = getCookie('activeAccordion');
  $('.' + activeAccordion).closest('ul').slideToggle();
});

function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i<ca.length; i++){
    var c = ca[i].trim();
    if (c.indexOf(name)==0) return c.substring(name.length,c.length);
  }
  return "";
}

答案 3 :(得分:1)

在li上点击

设置一个cookie
$('.arrows_list1-1 li ul').hide();
$('.arrows_list1-1 li').click(function(ev) {
    document.cookie="activeAccordion=" + $(ev).attr('id');
    $(this).find('>ul').slideToggle();
    ev.stopPropagation();
});

在文档就绪时,读取该cookie并设置正确的级别。

$(function(){
  var activeAccordion = getCookie('activeAccordion');
  $('#' + activeAccordion).closest('ul').slideToggle();
});

function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i<ca.length; i++){
    var c = ca[i].trim();
    if (c.indexOf(name)==0) return c.substring(name.length,c.length);
  }
  return "";
}

答案 4 :(得分:0)

当手风琴状态从默认值更改时,您可以将其存储在Cookie中,然后在页面刷新时将其读回。