css - jquery level two slides up and level three slides down -


hopefully small one.

i have 3 level vertical menu. built in wordpress , attempting keep simple before start putting in content , such.

i have got sub menus hide , when click level 1 button, level 2 menu slide down or slide shut (slidetoggle). issue when click third level, second level (parent) slides , third level slides down @ same time. when click second level again, shows second , third still open.

i have added console.log check happening , shows following: enter down down exit down enter up exit up

so see, entering slide down, sliding down , leaving. enters slide up, slides , exits. it's confusing if else. how can both???

i have dropped in codepen if interested. http://codepen.io/anon/pen/pjeevd

(click button 3 , click button 3.4 see third level effect) ideas muchly appreciated.

html

<ul id="menu-header">  <li id="menu-item-192" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-192"><a>button 1</a> <ul class="sub-menu"> <li id="menu-item-96" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-96"><a href="">button 1.1</a></li> <li id="menu-item-97" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-97"><a href="">button 1.2</a></li> </ul> </li>  <li id="menu-item-158" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-158"><a>button 2</a> <ul class="sub-menu"> <li id="menu-item-159" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-159"><a href="">button 2.1</a></li> <li id="menu-item-160" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-160"><a href="">button 2.2</a></li> </ul> </li>  <li id="menu-item-202" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-202"><a>button 3</a>  <ul class="sub-menu"> <li id="menu-item-99" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-99"><a href="">button 3.1</a></li> <li id="menu-item-206" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-206"><a href="">button 3.2</a></li> <li id="menu-item-205" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-205"><a href="">button 3.3</a></li> <li id="menu-item-207" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-207"><a>button 3.4</a>  <ul class="sub-menu"> <li id="menu-item-204" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-204"><a href="">button 3.4.1</a></li> <li id="menu-item-203" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-203"><a href="">button 3.4.2</a></li> </ul>  </li> </ul>  </li>  <li id="menu-item-104" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-104"><a href="">button 4</a></li> <li id="menu-item-103" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-103"><a href="">button 5</a></li>  </ul> 

jquery

$(".menu-item-has-children").click( function(event) { var target = $(this).find('> .sub-menu'); if(target.is(':visible')) { console.log('enter up'); target.slideup(500); console.log('up'); console.log('exit up'); } else { console.log('enter down'); target.slidedown(500); console.log('down'); console.log('exit down'); }  });  

css

ul {   margin: 0px;   padding: 0px;   list-style-type: none; }  .sub-menu {   display: none; } 

your .menu-item-has-children class assigned <li>. means .sub-menu inside particular <li> contained in , when click "button 3.4", both <li>'s i.e. "button 3.4" , "button 3" triggered causes effect. not sure if explained clearly.

one solution assign .menu-item-has-children <a> , find parent element's .sub-menu, snippet below.

	$(".menu-item-has-children").click( function(event) {  	      	    var target = $(this).parent().find('> .sub-menu');  		    	  		if(target.is(':visible')) {  						  			console.log('enter up');  			  			target.slideup(500);  				  						  			console.log('exit up');    		} else {  						  			console.log('enter down');  			  			target.slidedown(500);  				  		  				  			console.log('exit down');  			  		}  	      	});	
ul {    margin: 0px;    padding: 0px;    list-style-type: none;  }    .sub-menu {    display: none;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <ul id="menu-header">  	  	<li id="menu-item-192" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-192"><a class="menu-item-has-children">button 1</a>  		<ul class="sub-menu">  			<li id="menu-item-96" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-96"><a href="">button 1.1</a></li>  			<li id="menu-item-97" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-97"><a href="">button 1.2</a></li>  		</ul>  	</li>  	  	<li id="menu-item-158" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-158"><a class="menu-item-has-children">button 2</a>  		<ul class="sub-menu">  			<li id="menu-item-159" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-159"><a href="">button 2.1</a></li>  			<li id="menu-item-160" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-160"><a href="">button 2.2</a></li>  		</ul>  	</li>  	  	<li id="menu-item-202" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-202"><a class="menu-item-has-children">button 3</a>  		  		<ul class="sub-menu">  			<li id="menu-item-99" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-99"><a href="">button 3.1</a></li>  			<li id="menu-item-206" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-206"><a href="">button 3.2</a></li>  			<li id="menu-item-205" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-205"><a href="">button 3.3</a></li>  			<li id="menu-item-207" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-207"><a class="menu-item-has-children">button 3.4</a>  			  			<ul class="sub-menu">  				<li id="menu-item-204" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-204"><a href="">button 3.4.1</a></li>  				<li id="menu-item-203" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-203"><a href="">button 3.4.2</a></li>  			</ul>  			  			</li>  		</ul>  		  	</li>  	  	<li id="menu-item-104" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-104"><a href="">button 4</a></li>  	<li id="menu-item-103" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-103"><a href="">button 5</a></li>    </ul>


Comments