0

Hi i tried to close all items when i click on one like GIF shows but i couldn't find a solution to this : enter image description here

Children are hiden now : enter image description here

This is my JS code :

$('.menu-item-has-children > a').on('click', function(e){
    e.preventDefault();
    var EltToToggle = $(this).next('.sub-menu');
    var EltToToggle_parent =  EltToToggle.parents('.sub-menu');

    $(".sub-menu .sub-menu").not(EltToToggle).hide();
    // $(".sub-menu").hide();
    EltToToggle.fadeToggle();
    $(this).toggleClass('activu');
      return false;
  });

Here is my HTML code :

<ul>
   <li id="menu-item-1555" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1555">
      <a href="#" aria-expanded="false" class="">Nos métiers :  Fonctions support</a>
        <ul class="sub-menu">
            <li id="menu-item-1673" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1673">
                <a href="#">Test insertion shortcode tableau RWD – Alex</a>
            </li>
            <li id="menu-item-1600" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1600 menu-item-has-children">
                <a href="# " aria-expanded="false" class="btnForExpanding">testu</a>

                <ul class="sub-menu">
                    <li id="menu-item-1656" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1656">
                       <a href="#">Test de tableau – page – style 3 Empilement Stacking</a>
                    </li>
                </ul>
            </li>
        </ul>
    </li>

    <li id="menu-item-1556" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1556">
        <a href="https://jobs.cegid-webfactory.dev.ci.alterway.fr/fr/experiences-enrichissantes/nos-metiers-customer-care/">Nos métiers : Customer Care</a>
    </li>
</ul>

Here is the CSS for the arrow icon not for showing or hiding item :

 .activu {
    font-weight: $fw-semiBold;

    &:after {
        transform: rotate(180deg);
    }
}

 

2 Answers2

0

You can hide every .sub-menu but not the .sub-menu wich are children of the current .menu-item

$('.menu-item-has-children > a').on('click', function(e){
  e.preventDefault();
  var EltToToggle = $(this).next('.sub-menu');
  var notToHide = $(this).parents('.menu-item').find('.sub-menu');
     
  $(".sub-menu").not(notToHide).hide();
  EltToToggle.fadeToggle();
  $(this).toggleClass('activu');
   return false;
});

here is a fiddle

Martin Godzina
  • 1,470
  • 11
  • 17
0

before e.preventDefault(); add this line $(".activu").removeClass("activu");