jQuery addClass example

Change class name on click in jQuery

by Artur Soul

HTML

<header>
  <div class="wrap">
    <nav id="nav">
						<ul class="menu">
							<li  class="active"><a class="menu-item" href="#">HOME</a></li>
							<li class="menu-list">
								<a class="menu-item"  href="#">ABOUT US</a>
								<ul class="submenu">
									<li><a href="#">Item</a></li>
									<li>
										<a href="#">Item</a>
										<i class="fas fa-angle-right"></i>
										
											<ul class="submenu-level">
												<li><a href="#">Item 1</a></li>
												<li><a href="#">Item 2</a></li>
											</ul>
									</li>
									<li><a href="#">Item</a></li>
								</ul>
							</li>
							<li><a class="menu-item"  href="#">CONTACT</a></li>
						</ul>
					</nav>
					<div class="menuToggle" id="menu-btn">
						<span></span>
					    <span></span>
					    <span></span>
					    <span></span>
					</div>
  </div>
</header>

CSS

header{
  background:gray;
  height: 100%;
}
.wrap{
 	max-width: 1140px;
	padding: 0 20px;
	margin: 0 auto;
}

.wrap:after{
	clear: both;
	display: table;
	content: "";
}

.stop-scrolling{
	height: 100%;
	overflow: hidden;
}

.touchmove{
	height: 100%;
	overflow: hidden;
}

#nav {
	margin-left: auto;
}

#nav ul{
	margin:0;
	padding: 0;

	align-items: center;
	order: 0;
  flex: 1 1 auto;
	align-self: auto;
	list-style: none;

}

nav .menu{
		display: none;
		flex-direction: column;
		position: absolute;
		height: 100%;
		background: #ca6f3a;
		opacity: 0.9;
		width: 100%;
		top: 120px;
		left: 0;
		z-index: 200;
	}



#nav ul li{
	cursor: pointer;
	position: relative;
}

#nav ul li .menu-item{
	font-family: 'Lato', sans-serif;
	text-decoration: none;
	font-size: 1em;
	color:#454546;
	padding-bottom: 41px;
}

#nav .menu .submenu{
	display: flex;
	transition: all 0.5s ease 0.5s;
	-webkit-transition: all 0.5s ease 0.5s;
	-moz-transition: all 0.5s ease 0.5s;
	-o-transition: all 0.5s ease 0.5s;

}

#nav .menu .submenu li i{
	color:#454546;
}

#nav .menu .submenu li:hover i{
	color: #fff;
}

#nav ul li.active .menu-item{
	border-bottom: 5px solid #00b5d2;
	color: #fff;
}

.menuToggle{
	display: block;
	cursor: pointer;
	width: 45px;
	height: 35px;
	position: relative;
	margin-left: auto;

}
.menuToggle span{
	background: #454546;
	width: 100%;
	height: 5px;
	position: absolute;
	display: block;
	left: 0;
  	transform: rotate(0deg);
  	transition: .25s ease-in-out;
}
.menuToggle span:nth-child(1){
	top: 0px;
}
.menuToggle span:nth-child(2),
.menuToggle span:nth-child(3){
	top: 13px;
}
.menuToggle span:nth-child(4){
	top: 26px;
}

 .menuToggle.menu-state-open span:nth-child(1){
	top: 0px;
	transform: rotate(45deg);
}

 .menuToggle.menu-state-open span:nth-child(2),
 .menuToggle.menu-state-open span:nth-child(3){
 	display: none;
 }

 .menuToggle.menu-state-open span:nth-child(4){
	top: 0px;
	transform: rotate(-45deg);
}

#nav .menu li .submenu{
	display: none;
	position:...

JavaScript

jQuery(document).ready(function(){
let current = 'menu-state-open';

   $('.menuToggle').on('click', function() {
        $('body').addClass('stop-scrolling');
        $('body').bind('touchmove', function(e){e.preventDefault()})

    	$(this).addClass(current);
        $('#nav .menu').toggle(1000, function(){
            if($(this).css('display') === "none"){
                $(this).removeAttr('style');
                $('.menuToggle').removeClass(current);
                $('body').removeClass('stop-scrolling');
                $('body').unbind('touchmove');
            }
       });
    });


     $('#nav ul li').on('click', function(){
            let current = $('#nav ul li');

            current.removeClass('active');
		    $(this).addClass('active');
       });
  
});