2016-03-23 15 views
2

Ich benutze Slide down & Bis es funktioniert gut. Aber mein Problem ist, wenn Benutzer diese Seite öffnen, schieben sie nach oben, wenn Benutzer klicken, dann nur nach unten rutschen.Slide Down & Slide Up

<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> 

Welche Fehler i

+0

Was ist das Problem? – Satpal

+0

Wenn Benutzer klicken, dann nur öffnen, aber jetzt, wenn wir diese Seite öffnen, öffnet es immer –

+2

Bitte legen Sie dies in eine JSFiddle und wir können von dort gehen –

Antwort

2

Add Klasse closed mit dem Element getan

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>

+0

Nein Eigentlich beim ersten Mal laden sollte es nicht sein, wenn klicken dann nur öffnen –

+0

@Kothari Ich habe die Antwort aktualisiert. Bitte überprüfen Sie es –

+0

Dank für glatte slideUp (1000) muss ich erhöhen/verringern –

1

Sie können einfach $.fn.slideToggle() und $.fn.toggleClass() verwenden, um das Problem der Statuserkennung zu lösen. Lösung:

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>

Sie müssen nur von Anfangszustand der Klasse und CSS Anzeigeattribut sicher sein. Und fügte auch $.fn.stop() Funktion hinzu, um Animationsstörungen zu vermeiden.