jQuery animate return back to original position when click another anchor

Viewed 495

I want to return nav back to original position after clicking anther anchor. I wrote below js first animate working properly but when I click second anchor to move nav returns to original position not working..

$(document).ready(function(){
    $(".menu-button").click(function(){
        $(".nav-bar").animate({left: '50px'});
    });
    $(".close-nav").click(function(){
     $(".nav-bar").animate({left:'-50px;'});
    });
});
.menu-button {
  display: block;
  width: 50px;
  height: 50px;
  background: red;
  float: left;
}
.nav-bar {
  position: relative;
  background: rgba(0,0,0,0.5);
  left: -600px;
}
.nav-bar ul {
  list-style-type: none;
}
.nav-bar ul li {
  float: left;
  margin-left: 20px;
}
.nav-bar ul li a {

}
a.close-nav {
  position: relative;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="#" class="menu-button open-nav"></a>
<nav class="nav-bar">
  <ul>
    <li><a href="">About Us</a></li>
    <li><a href="">Our Portfolio</a></li>
    <li><a href="">Client Testimonial</a></li>
    <li><a href="">Contact</a></li>
    <li><a href="" class="close-nav"><i class="fa fa-chevron-left" aria-hidden="true"></i></a></li>
  </ul>
</nav>

2 Answers

You have to use preventDefault() on the event object in order to cancel the link click. Otherwise, clicking on the closing arrow will just navigate to the same page again.

Also, you have to animate back to -600px (the initial position from your css), not just -50px.

$(document).ready(function(){
    $(".menu-button").click(function(ev){
        ev.preventDefault();
        $(".nav-bar").animate({left: '50px'});
    });
    $(".close-nav").click(function(ev){
        ev.preventDefault();
       $(".nav-bar").animate({left:'-600px'});
    });
});
.menu-button {
  display: block;
  width: 50px;
  height: 50px;
  background: red;
  float: left;
}
.nav-bar {
  position: relative;
  background: rgba(0,0,0,0.5);
left: -600px;
}
.nav-bar ul {
  list-style-type: none;
}
.nav-bar ul li {
  float: left;
  margin-left: 20px;
}
.nav-bar ul li a {

}
a.close-nav {
  position: relative;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="#" class="menu-button open-nav"></a>
<nav class="nav-bar">
  <ul>
    <li><a href="">About Us</a></li>
    <li><a href="">Our Portfolio</a></li>
    <li><a href="">Client Testimonial</a></li>
    <li><a href="">Contact</a></li>
    <li><a href="" class="close-nav"><i class="fa fa-chevron-left" aria-hidden="true"></i></a></li>
  </ul>
</nav>

First you should preventDefault on a click and then you can animate left to -100%

$(".menu-button").click(function() {
  $(".nav-bar").animate({
    left: '50px'
  });
});
$(".close-nav").click(function(e) {
  e.preventDefault()
  $(".nav-bar").animate({
    left: '-100%'
  });
});
.menu-button {
  display: block;
  width: 50px;
  height: 50px;
  background: red;
  float: left;
}
.nav-bar {
  position: relative;
  background: rgba(0, 0, 0, 0.5);
  left: -600px;
}
.nav-bar ul {
  list-style-type: none;
}
.nav-bar ul li {
  float: left;
  margin-left: 20px;
}
a.close-nav {
  position: relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<a href="#" class="menu-button open-nav"></a>
<nav class="nav-bar">
  <ul>
    <li><a href="">About Us</a></li>
    <li><a href="">Our Portfolio</a></li>
    <li><a href="">Client Testimonial</a></li>
    <li><a href="">Contact</a></li>
    <li><a href="" class="close-nav"><i class="fa fa-chevron-left" aria-hidden="true"></i></a></li>
  </ul>
</nav>

Related