如何防止手风琴菜单在页面处于活动状态时关闭

How to prevernt accordion menu from closing when page is active

我很想得到一些帮助。

我有包含两个字段的菜单:带有折叠菜单箭头的可点击字段,以及将我带到 linked 页面的其余字段。

我希望当我单击第 link 页的菜单字段时,我的菜单保持打开状态。换句话说:当页面处于活动状态时,菜单保持打开状态。

此致!

(function ($) {
    $(document).ready(function () {
        $('#cssmenu li.has-sub').prepend('<span class="holder"></span>');
   $('#cssmenu li.has-sub > .holder').on('click', this, function(){
      var element = $(this).parent('li');
            if (element.hasClass('open')) {
                element.removeClass('open');
                element.find('li').removeClass('open');
                element.find('ul').slideUp();
            } else {
                element.addClass('open');
                element.children('ul').slideDown();
                element.siblings('li').children('ul').slideUp();
                element.siblings('li').removeClass('open');
                element.siblings('li').find('li').removeClass('open');
                element.siblings('li').find('ul').slideUp();
            }
        });
    });
})(jQuery);
#cssmenu, #cssmenu ul, #cssmenu ul li, #cssmenu ul li a {
    margin: 0;
    padding: 0;
    border: 0;
    list-style: none;
    line-height: 1;
    display: block;
    position: relative;
}
#cssmenu {
    width: 200px;
    font-family: Helvetica, Arial, sans-serif;
    color: #ffffff;
}
#cssmenu ul ul {
    display: none;
}
.align-right {
    float: right;
}
#cssmenu > ul > li > a {
    padding: 15px 20px;
    border-top: 1px solid #1682ba;
    cursor: pointer;
    font-size: 14px;
    font-weight: bold;
    text-decoration: none;
    color: #ffffff;
    background: #36aae7;
}
.has-sub > a:after {
    content:"";
    width: 0;
    height: 0;
    float: right;
    border-right: 10px solid transparent;
    border-left: 10px solid transparent;
    margin: 10px 10px 0 0;
    border-top: 6px solid #5F5F5F;
}
.holder{
border: 1px solid transparent;
padding: 11px 26px;
z-index: 3;
position: absolute;
margin: 11px 12px 0 0;
right: 0;
background: rgba(255, 65, 65, 0.24);
 }
#cssmenu > ul > li.open > a {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.15);
    border-bottom: 1px solid #1682ba;
}
#cssmenu > ul > li:last-child > a, #cssmenu > ul > li.last > a {
    border-bottom: 1px solid #1682ba;
}
#cssmenu ul ul li a {
    cursor: pointer;
    border-bottom: 1px solid #32373e;
    border-left: 1px solid #32373e;
    border-right: 1px solid #32373e;
    padding: 10px 20px;
    z-index: 1;
    text-decoration: none;
    font-size: 13px;
    color: #eeeeee;
    background: #49505a;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
#cssmenu ul ul li:first-child > a {
    box-shadow: none;
}
#cssmenu ul ul ul li:first-child > a {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
#cssmenu ul ul ul li a {
    padding-left: 30px;
}
#cssmenu ul ul li.has-sub > a::after {
    content:"";
    width: 0;
    height: 0;
    float: right;
    border-right: 10px solid transparent;
    border-left: 10px solid transparent;
    margin: 10px 10px 0 0;
    border-top: 6px solid #5F5F5F;
}
<type="text/javascript">
    </script>
    <script src="http://code.jquery.com/jquery-2.1.4.min.js" type="text/javascript"></script>
    <div id='cssmenu'>
        <ul>
            <li><a href='#'><span>Home</span></a>
            </li>
            <li class='active has-sub'><a href='www.DontHideMePlease.com'><span>Products</span></a>

                <ul>
                    <li class='has-sub'><a href='#'><span>Product 1</span></a>

                        <ul>
                            <li><a href='#'><span>Sub Product</span></a>
                            </li>
                            <li class='last'><a href='#'><span>Sub Product</span></a>
                            </li>
                        </ul>
                    </li>
                    <li class='has-sub'><a href='#'><span>Product 2</span></a>

                        <ul>
                            <li><a href='#'><span>Sub Product</span></a>
                            </li>
                            <li class='last'><a href='#'><span>Sub Product</span></a>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li><a href='#'><span>About</span></a>
            </li>
            <li class='last'><a href='#'><span>Contact</span></a>
            </li>
        </ul>
    </div>

http://jsfiddle.net/kwsa/ja8qy497/2/

假设您的 active class 已添加 "when the page is active",您可以使用:

(function ($) {
  $(document).ready(function () {
    $('#cssmenu li.has-sub').prepend('<span class="holder"></span>');
    $('#cssmenu li.has-sub > .holder').on('click', this, function() {
      var element = $(this).parent('li');
      if (element.hasClass('open')) {
        element.removeClass('open');
        element.find('li').removeClass('open');
        element.find('ul').slideUp();
      }
      else {
        element.addClass('open');
        element.children('ul').slideDown();
        element.siblings('li').children('ul').slideUp();
        element.siblings('li').removeClass('open');
        element.siblings('li').find('li').removeClass('open');
        element.siblings('li').find('ul').slideUp();
      }
    });

    // Opens "active" Menu Item(s)
    $('#cssmenu li.active').addClass('open').children('ul').slideDown();
  });
})(jQuery);

哦,太棒了!发现 wordpress 将 .current-menu-item 添加到活动页面,所以它现在看起来像这样: $('#cssmenu li.current-menu-item').addClass('open').children('ul').slideDown(); 但是当我点击任何子页面菜单时它正在关闭,尽管事实上子页面在它们处于活动状态时也添加了 .current-menu-item .. 当我点击任何子页面时,如何保持菜单打开 link?