Reputation: 1240
I want to keep my code as simple as possible for this section. Given an accordion menu like this:
<div class="wrap">
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
</div>
JQ:
$(".accordion-wrap").on("click", function(){
$(this).children().eq(1).slideToggle(400);
})
How can I do it so only 1 "accordion-text" is visible at a time?
This sort of works, I suppose it's close but it has a strange behavior, it sometimes works sometimes it doesn't:
$(".accordion-wrap").on("click", function(){
$(this).children().eq(1).slideToggle(400);
$(this).siblings().children().eq(1).hide();
})
Upvotes: 1
Views: 58
Reputation: 196
use this css
.accordion-text{
display:none;
}
and this js
$(document).ready(function(){
$(".accordion-item").click(function(){
$(".accordion-text").slideUp(400);
if(!$(this).next().is(":visible")){
$(this).next().slideToggle(400)
}
})
})
Upvotes: 1
Reputation: 2455
You can try this updated code jsfiddle.net/bharatsing/ectb5Lqa/1/
$(".accordion-wrap").on("click", function(){
$(this).children().eq(1).slideToggle(400);
$(".accordion-wrap .accordion-text").not($(this).children().eq(1)).hide();
})
Upvotes: 1
Reputation: 4870
Below is the best example of slideUp
and slideToggle
animation.
$(".accordion-wrap").on("click", function(){
$(this).children('.accordion-text').slideToggle();
$(this).siblings().children().next().slideUp();
return false;
})
.accordion-text{
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
<div class="accordion-wrap">
<div class="accordion-item"> <h3> Tab Title </h3> </div>
<p class="accordion-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac sem sem. Aenean nibh turpis, fermentum nec interdum sit amet, molestie a turpis. Cras imperdiet vestibulum purus eu bibendum. Sed vitae sem iaculis, lacinia massa eu, eleifend eros. Sed eget efficitur velit. Vestibulum vel lorem lacus. Nunc accumsan massa nec ipsum molestie tincidunt. Phasellus vehicula, lorem tempus fringilla posuere, sapien enim tristique quam, vitae feugiat eros ipsum sit amet metus. </p>
</div>
</div>
Would you please check my above snippet?
Upvotes: 1