Hello friends!
I'm having issue with slide down
menu when I initially click on button
(image) which is <a id="js-cat" class="js-cat"></a>
it works, but it slides down
and immediately slides up
again, which I haven't planned to do. My goal is to make it responsive, for instance; if user gonna click that button
(image) once it should slide down, and if user gonna click it twice and it should slide up again.
Please guys I need your help. I was hardly trying to do it, but it eventually I'm unable to make my code work.
Here is my HTML:
<a id='js-mnu' class='js-mnu'></a>
<a id="js-cat" class="js-cat"></a>
CSS
#js-cat {display:block;display:block;width:35px;height:35px;margin:17px 10px; position: absolute;
right: 0;}
.js-cat {background:url(images/cat.png) center center no-repeat;opacity:0.75;}
And jQuery:
$(document).ready(function(){
$("#js-cat").click(function(){
$('ul.catalog').slideDown();
});
$("#js-cat").click(function(){
$('ul.catalog').slideUp();
});
});
You are binding the click event twice. You should only bind it once and check if the menu is hidden or not to slideup or down.
$(document).ready(function() {
$("#js-cat").click(function() {
var isHidden = $(".menu").is(":hidden");
if (isHidden) {
$('.menu').slideDown();
} else {
$('.menu').slideUp();
}
});
});
body {
margin: 10px;
}
.menu {
margin: 10px 0;
background: #abcdef;
width: 250px;
padding: 10px;
}
a {
cursor: pointer;
border: 1px solid #555;
background: #fafafa;
color: #555;
padding: 10px;
display: inline-block
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="js-cat" class="js-cat">Click</a>
<div class="menu">Content: Lorem ipsum</div>