Je suppose que ma logique if/else est faussée. Fondamentalement, j'ai une structure en accordéon où, au chargement de la page, le premier accordéon est à moitié révélé à une hauteur de 150px. Ensuite, lorsque l'utilisateur clique sur l'en-tête accordéon, il s'ouvre complètement à une hauteur de 320px. Au clic suivant, il devrait se fermer et agir normalement comme les autres éléments d'accordéon avec un cache/show standard. Il fonctionne actuellement bien mais il n'est pas lisse et le volet d'accordéon se ferme avant qu'il ne se révèle pleinement.accordéon si/sinon logique
Voici le html:
<div class="accordion">
<h3 class="acc-header glanceH">At a glance</h3>
<div class="acc-content glanceC slider" >
<div class="hero-video">
</div>
</div>
<h3 class="acc-header">What we do</h3>
<div class="acc-content" >
<div class="hero-video what-we-do">
</div>
</div>
<h3 class="acc-header">How we do it</h3>
<div class="acc-content how" >
</div>
<h3 class="acc-header">Where we reach</h3>
<div class="acc-content where" >
</div>
<h3 class="acc-header">How</h3>
<div class="acc-content" >
</div>
</div>
Voici le jQuery:
//generally slides all accordion elements with class "acc-content" when div with class "acc-header" is clicked
$('.acc-header').click(function(e) {
e.preventDefault();
$(this).toggleClass('acc-active');
$(this).next('.acc-content').slideToggle(200).siblings('.acc-content').slideUp(200);
$(this).siblings().removeClass('acc-active');
});
//when the page loads 'peek' at the content of the first accordion content (to 150px depth)
$('.slider').css('height','150px');
$('.slider').animate({ height: 'show'}, 'slow').addClass('itsopen');
//if its already been opened, close it, else open it to 320px
$('.glanceH').click(function() {
if(!$(this).hasClass('acc-active')) {
$(this).next().siblings('.acc-content').slideUp(2000);
$(this).siblings().removeClass('acc-active');
}
else if($('.slider').hasClass('itsopen')){
$('.slider').animate({ height: 320}, 'slow');
}
});
« effing génie. Fonctionne un régal. Merci beaucoup. Maintenant, je dois seulement le comprendre :) – donwest