Here is my code
$(function(){
$("li div.main-section").addClass("active");
$('li > div > a').on('click',function(event){
$('li > div').removeClass("active");
$(this).closest('div').addClass("active");
});
$('li > div > .dropdown-arrow').on('click',function(event){
event.preventDefault()
$(this).closest('li').find('ul').first().toggle(300);
});
});
ul{
list-style:none;
}
.dropdown-main li .dropdown-main {
display: none;
}
.dropdown-main .active{
background-color: rgba(0,201,255,0.5);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<ul class="dropdown-main" >
<li class="dropdown" >
<div class="main-section">
<button class="dropdown-arrow">+</button>
<a href="" ><span>Main Menu</span></a>
</div>
<ul class="dropdown-main">
<li class="dropdown">
<div>
<button class="dropdown-arrow">+</button>
<a href="" ><span>Sub Menu</span></a>
</div>
<ul class="dropdown-main">
<li class="dropdown">
<div >
<button class="dropdown-arrow">+</button>
<a href="" ><span>Child Menu</span></a>
</div>
<ul class="dropdown-main">
<li class="dropdown">
<div >
<button class="dropdown-arrow">+</button>
<a href="" ><span>Grand Child Menu</span></a>
</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Description------------------
Case:1 By default active status for main menu color (blue).
Case:2 On clicking the '+' button the drop down need to be expand and collapse.
Case:3 On clicking the string (like main menu, sub menu, child menu..Garnd child menu) need to changes the active state.
Case:4 If child (Child Menu) string is active when the parent(Sub Menu) '+' button clicked clear the collapse(Child Menu) and remove the active class state and add to active class color to parent(Sub Menu) div.
Case:5 If child (Child Menu) string is not active when the parent(Sub Menu) '+' button clicked clear the collapse(Child Menu) and keep the active class state and parent(Main Menu) div.
Help welcome