Свернуть / скрыть меню мобильной навигации после нажатия ссылки навигации - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть загрузка страницы ajax, работающая на моем WordPress-сайте с официальными двадцать шестнадцатью темами и витриной магазина.

Единственное неудобство в том, что меню мобильной навигации не закрывается после нажатия на ссылку иновая страница была загружена и загружена скриптом ajax.

Я просмотрел большинство других похожих тем и пробовал различные фрагменты jquery, но не смог заставить его работать.

Код для кнопки переключения меню на twentysixteen:

<button id="menu-toggle" class="menu-toggle toggled-on" aria-expanded="true" aria-controls="site-navigation social-navigation">Menu</button>

HTML-код контейнера меню:

<div class="menu-main-container">
<ul id="menu-main" class="primary-menu">
<li id="menu-item-292" class="menu-item menu-item-type-post_type menu-item- 
object-page menu-item-292"><a href="https://example.com/my-account/">My 
 account</a></li>
<li id="menu-item-293" class="menu-item menu-item-type-post_type menu-item- 
object-page menu-item-293"><a href="https://example.com/labels/">Labels</a> 
</li></ul>
</div>

Из моего исследования этого вопроса может показаться,что есть потенциально два способа достичь того, чего я добиваюсь.

  1. Изменение атрибута арии при клике с expanded="true" на expanded="false" может помочь?

Я нашел этот фрагмент кода, но понятия не имею, как бы я на самом деле реализовал

$(function () { 
    $('li').on('click', function (e) {
        var menuItem = $( e.currentTarget );

        if (menuItem.attr( 'aria-expanded') === 'true') {
            $(this).attr( 'aria-expanded', 'false');
        } else {
            $(this).attr( 'aria-expanded', 'true');
        }
    });
});

Используйте функцию щелчка jquery, чтобы вызвать кнопку переключения.

$ ("# menu-main") .click (function () {$ ("# menu-toggle") .click ();});

Любая помощь будет принята с благодарностью!Спасибо!

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

попробуйте

$(function () { 
   $('#menu-main li>a').on('click', function (e) {
       $( "#menu-toggle" ).click();
   });
});

или

$(function () { 
   $('#menu-main li>a').on('click', function (e) {

       // i set  $(".toggled-on") because i dunno which is your main menu 
       //<div class="menu-main-container">
       // or 
       //<ul id="menu-main" class="primary-menu">

       $(".toggled-on").attr("aria-expanded","false");
       $(".toggled-on").removeClass(".toggled-on");
   });
});
0 голосов
/ 09 апреля 2019

Надеюсь, что это решит вашу проблему, спасибо

$("#menu-toggle").click(function(e){  /*for click on menu*/
  $('.menu-main-container').toggle()
})
$('.menu-item').click(function(e){    /*for click on link*/
     $("#menu-toggle").trigger('click')
       
 })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="menu-toggle" class="menu-toggle toggled-on" aria-expanded="true" aria-controls="site-navigation social-navigation">Menu</button>
<div class="menu-main-container">
<ul id="menu-main" class="primary-menu">
<li id="menu-item-292" class="menu-item menu-item-type-post_type menu-item- 
object-page menu-item-292"><a href="https://example.com/my-account/">My 
 account</a></li>
<li id="menu-item-293" class="menu-item menu-item-type-post_type menu-item- 
object-page menu-item-293"><a href="https://example.com/labels/">Labels</a> 
</li></ul>
</div>
...