javascript - WordPress 切换菜单 - 在当前页面保持菜单打开

标签 javascript jquery html css wordpress

我在 WordPress 中有一个侧边栏切换菜单,它工作正常,但是当单击其中一个切换菜单链接并且您被带到该链接的关联当前页面时,切换菜单关闭。我希望它保持打开状态。

我找到了一个有效方法的示例,但它更适用于静态站点,我想知道如何将它调整为我自己现有的 jQuery 代码,因为我的菜单是在 WordPress 中动态创建的。可以在此处找到似乎有效的示例代码方法:jsfiddle.net/LcsLr/33/

我们非常欢迎任何帮助!

下面是我当前的html代码:

<div class="custom-sidebar">
<div class="nav-section-wrap">
<div class="menu-air-operators-menu-container">

<ul id="menu-custom" class="custom">
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link One" href="http://localhost/testsite/top-level-link-one/">TOP LEVEL LINK ONE</a></li>

<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent"><a title="Top Level Link Two" href="#">TOP LEVEL LINK TWO</a>
<ul style="display: none;" class="sub-menu">
<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item current_page_item"><a title="Subnav Link One" href="http://localhost/testsite/subnav-link-one/">Subnav Link One</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Subnav Link Two" href="http://localhost/testsite/subnav-link-two/">Subnav Link Two</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Subnav Link Three" href="http://localhost/testsite/subnav-link-three/">Subnav Link Three</a></li>
</ul>
</li>

<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link Three" href="http://localhost/testsite/top-level-link-three/">TOP LEVEL LINK THREE</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link Four" href="http://localhost/testsite/top-level-link-four/">TOP LEVEL LINK FOUR</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link Five" href="http://localhost/testsite/top-level-link-five/">TOP LEVEL LINK FIVE</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link Six" href="http://localhost/testsite/top-level-link-six/">TOP LEVEL LINK SIX</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link Seven" href="http://localhost/testsite/top-level-link-seven/">TOP LEVEL LINK SEVEN</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page"><a title="Top Level Link Eight" href="http://localhost/testsite/top-level-link-eight/">TOP LEVEL LINK EIGHT</a></li>
</ul>

</div>
</div>
</div>

和我的 jQuery 代码:

(function($) { 

// Sidebar Navigation
$(document).ready(function() {

    // Hide the sub menu items first
    $("div.custom-sidebar div.custom-links-wrap ul > li > ul").hide();

    // On click
    $('div.custom-sidebar div.custom-links-wrap ul > li > a').click(function() {
        if($('ul', $(this).parent()).children().length) {
            $('ul', $(this).parent()).slideToggle("slow");
            return false;
        } else {
            return true;
        }
    });

    $('div.custom-sidebar div.custom-links-wrap ul > li').click(function(e) {
        if ($(e.target).is("li")) {
            $('ul', this).slideToggle("slow");
            return false;
        } else {
            return true;
        }

    });

    });

})(jQuery);

和我的 CSS:

div.custom-sidebar div.custom-links-wrap {background: url('images/links-bgr.png') repeat; padding: 14px 14px 14px 0px;}
div.custom-sidebar div.custom-links-wrap ul li {font-weight: bold; background: none; padding-left: 18px; padding-top: 6px; padding-bottom: 6px;}
div.custom-sidebar div.custom-links-wrap ul li.current-menu-item {background: url('images/links-current.png') no-repeat 0px 2px;}

div.custom-sidebar div.custom-links-wrap ul li ul {margin-left: -18px;}
div.custom-sidebar div.custom-links-wrap ul li ul li {font-weight: normal; padding-left: 36px;}
div.custom-sidebar div.custom-links-wrap ul li ul li:last-child {padding-bottom: 0px;}
div.custom-sidebar div.custom-links-wrap ul li ul li.current-menu-item {background: url('images/links-current.png') no-repeat 0px 2px;}

最佳答案

这应该适用于您的示例:

$('.sub-menu').hide();
$("li:has(ul)").click(function(){
  $("ul",this).slideDown();
});

$('#menu-custom ul li ul.sub-menu li a').click(function(e){
  if ($(this).attr('class') != 'active'){
    $('#menu-custom ul li a').removeClass('active');
    $(this).addClass('active');
  }
});

$('a').filter(function(){
  return this.href === document.location.href;
}).addClass('active');

$("ul.sub-menu > li > a").each(function () {
  var currentURL = document.location.href;
  var thisURL = $(this).attr("href");
  if (currentURL.indexOf(thisURL) != -1) {
    $(this).parents("ul.sub-menu").css('display', 'block');
  }
});

$('#menu-custom > ul > li > a').each(function(){
  var currURL = document.location.href;
  var myHref= $(this).attr('href');
  if (currURL.match(myHref)) {
    $(this).parent().find("ul.sub-menu").css('display', 'block');
  }
}); 

关于javascript - WordPress 切换菜单 - 在当前页面保持菜单打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858877/

相关文章:

jquery - 这是什么意思 : "jQuery(' > li', 这个)”

javascript - 如何使用确认警报并返回 AJAX promise ?

javascript - 在javascript中迭代数组+返回总和?

javascript - 文本起始位置左、中和右

html - 将斜体样式应用于管道符号

javascript - 如何逐行显示div元素

html - margin 0 auto 根本不起作用

javascript - 组件名称无效 : "pages/product/_slug.vue". 组件名称应符合 html5 规范中有效的自定义元素名称

javascript - 如果单元格[X]已写入输入,则从行中获取值

javascript - 使用 select 标签显示和隐藏 div