Reputation: 133
I am using Slide down & Up it's working fine. But my problem is when user open this page it slide Up if user click then only slide down.
<script type="text/javascript">
jQuery(function ($) {
$(".block-layered-nav dt").click(function () {
if ($(this).next("dd").css("display") == "none") {
$(this).next("dd").slideDown(1000);
$(this).removeClass("closed");
} else {
$(this).next("dd").slideUp(1000);
$(this).addClass("closed");
}
});
});
</script>
What mistake i done
Upvotes: 2
Views: 3845
Reputation: 9
<html>
<head>
<script src="jquery.js">
</script>
</head>
<body >
<div class="test4" style="border: 1px solid black;">
<h1>Hi </h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quas ducimus, animi provident laudantium necessitatibus odit. Qui quam iusto optio libero cum, nemo perferendis rerum veritatis expedita, est totam dolore natus!</p>
</div>
<div class="test1">
<button>Show Button</button>
<button id="test">Button 2</button>
</div>
<script>
$(document).ready(function(){
$("button").click(function(){
$("$test4").slideToggle();
});
$("#test").click(function()
{
$("#test4").slideDown();
});
});
</script>
</body>
</html>
Upvotes: -1
Reputation: 6264
Add class
closed
with the element
Working Demo
jQuery(function($) {
$('dd').hide()
$(".navigation dt").click(function() {
if ($(this).next('dd').is(":visible")) {
$(this).next('dd').slideToggle('slow').toggleClass('close');
} else {
$(this).next('dd').slideToggle('slow').toggleClass('close');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="navigation">
<dt>test</dt>
<dd class="close">sample</dd>
</div>
Upvotes: 2
Reputation: 44
You can just use $.fn.slideToggle()
and $.fn.toggleClass()
to resolve state detection problem. Solution:
jQuery(function($) {
$(".navigation dt").click(function() {
$(this).next('dd').stop(true, false).slideToggle().toggleClass('close');
});
});
.closed {
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="navigation">
<dt>test</dt>
<dd class="closed">sample</dd>
</div>
You just need to be sure of initial state of the class and CSS display attribute. And, also added $.fn.stop()
function to avoid animation glitches.
Upvotes: 1