2010-07-21 7 views
9

J'ai un élément div # et si on clique dessus, div # choisit slideDown(). Si vous cliquez à nouveau sur div # choice, slideUp(); Comment puis-je tester si les choix sont déjà en baisse ou en hausse? Je sais que je pourrais stocker dans une variable et basculer sa valeur chaque fois que les éléments div # sont cliqués, mais que se passe-t-il si #choices a été glissé par d'autres moyens?jquery toggle slideUp/slideDown

Répondre

15

utilisation .slideToggle()

+0

ne fonctionnera pas car il dit la lame peut être réalisée par d'autres éléments. –

+2

+1. @ Kaaviar: en fait, cela devrait fonctionner correctement car 'slideToggle()' va vérifier si l'élément est actuellement caché ou montré. –

+0

comment faire glisser vers le haut ou glisser vers le bas avec slideToggle? – Smash

6

Comme Marimuthu's answer des points, vous pouvez utiliser slideToggle() glisser vers le haut si le div est déjà ouvert, ou vers le bas si elle est fermée.

Vous pouvez également vérifier la propriété display pour voir si elle est actuellement visible ou non. À partir des documents jQuery pour slideUp().

Une fois que la hauteur atteint 0, la propriété de style d'affichage est définie sur Aucune pour garantir que l'élément n'affecte plus la disposition de la page.

Sachant cela, vous pouvez vérifier s'il est réglé sur "none":

var $choices = $('div#choices'); 
if ($choices.css("display") == "none") 
    $choices.slideDown(); 
else 
    $choices.slideUp(); 
0

Essayez ceci -


HTML:

<a href="#demo" class="nav-toggle">Show</a> 
<div id="demo" style="display:none;"> 
<p>short info</p> 
</div> 


JQUERY SCRIPT:

$('.nav-toggle').click(function(){ 
    var content_id = $(this).attr('href');    
    var toggle_switch = $(this); 
    $(content_id).toggle(function(){ 
    if($(this).css('display')=='none'){ 
      toggle_switch.html('Show'); 
    }else{ 
     toggle_switch.html('Hide'); 
     } 
    }); 
});