jquery - How to prevent an animation if a subitem is clicked? -


i'm trying make simple sidebar meny. idea when click on item, want other menu item's submenus slideup, therefore hiding them. works. don't want animation run if clicking on sub item.

my html looks this:

<ul id="menu-work-sidebar" class="menu">   <li id="menu-item-41" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-41">landscape     <ul class="sub-menu">       <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-work menu-item-58">test1       </li>     </ul>   </li>   <li id="menu-item-42" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children menu-item-42"><a href="#">portraits</a>     <ul class="sub-menu">       <li id="menu-item-57" class="menu-item menu-item-type-post_type menu-item-object-work current-menu-item menu-item-57">test2       </li>     </ul>   </li>   <li id="menu-item-47" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-47">still life   </li> </ul> 

and script this:

$('#work-sidebar').on('click', '.menu-item-type-custom', function() {      $(this).siblings().children('.sub-menu:visible').slideup();     $(this).children('.sub-menu').stop().slidetoggle(); }); 

i've been battling hours cannot work no matter do.. how fix this?

you need tell jquery toggle slide each time click menu item, , need tell jquery stop event propagation when click submenu items:

$('#menu-work-sidebar > li').on('click', function() {    $(this).siblings().children('.sub-menu:visible').slideup();    $(this).children('.sub-menu').stop().slidetoggle();  });  $('#menu-work-sidebar > li > ul > li').on('click', function() {    event.stoppropagation();  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <ul id="menu-work-sidebar" class="menu">    <li id="menu-item-41" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-41">landscape      <ul class="sub-menu">        <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-work menu-item-58">test1</li>      </ul>    </li>    <li id="menu-item-42" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children menu-item-42"><a href="#">portraits</a>        <ul class="sub-menu">        <li id="menu-item-57" class="menu-item menu-item-type-post_type menu-item-object-work current-menu-item menu-item-57">test2</li>      </ul>    </li>    <li id="menu-item-47" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-47">still life</li>  </ul>


Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -