2011-12-01 2 views
0

Celui-ci ne fonctionnera pas. La file d'attente d'animation finit dans un chaos. Qu'est-ce que je me suis trompé? Aidez-moi, s'il vous plaît.Comment lier/dissocier cliquez pour empêcher le chaos de la file d'attente animée?

$button.bind('click',showHideFavourites); 

function showHideFavourites() { 
    if ($favContent.css('opacity') == 1) { 
     hideFavourites(); 
    } else { 
     showFavourites(); 
    } 
} 

function hideFavourites() { 
    $button.unbind('click'); 

    $favContent.animate({'opacity':'0'},250,function() { 
     $favourites.animate({'height':0},{queue:false,duration:250,easing:'easeInOutQuad',complete:function() { 
      $button.text(showFav); 

      $button.bind('click',showFavourites); 
     }}); 
    }); 
} 

function showFavourites() { 
    $button.unbind('click'); 

    $favourites.animate({'height':fl_openHeight},{queue:false,duration:250,easing:'easeInOutQuad',complete:function() { 
     $favContent.animate({'opacity':'1'},250); 
     $button.text(hideFav); 

     $button.bind('click',hideFavourites); 
     }); 
    }}); 
} 

Répondre

1
$button.on('click', function() { 
    $favContent.css('opacity') == 1) ? hideFavourites() : showFavourites(); 
}); 

function hideFavourites() { 
    $favContent.stop(true, true).animate({'opacity':'0'},250,function() { 
     $favourites.stop(true, true).animate({'height':0}, 250, 'easeInOutQuad', function() { 
      $button.text(showFav); 
     }); 
    }); 
} 

function showFavourites() { 
    $favourites.stop(true, true).animate({'height':fl_openHeight}, 250 'easeInOutQuad' function() { 
     $button.text(hideFav); 
     $favContent.stop(true, true).animate({'opacity':'1'},250); 
    }); 
} 

Si vous essayez d'animer la taille et l'opacité en même temps, vous devez abandonner les fonctions de chaînage ainsi, je did'nt que je was'nt sûr de ce que l'noqeue était pour?

+0

Merci. En ce qui concerne le '.on', je n'ai jamais entendu parler de ça. D'abord, je pense que cela devrait être «.one», mais cela n'a aucun sens dans ce cas. Donc, je l'ai testé avec '.on' et il fait la chose en fait, mais le problème de la file d'attente est toujours là, lorsque je clique sur le bouton rapidement deux ou trois fois. – Thomas

+0

.on() est nouveau, vous pouvez toujours utiliser .click(), mais je l'ai utilisé car il remplace bind, live, click, etc. facilite le choix. Le problème avec la construction de l'animation qeue pourrait probablement être résolu avec .stop(); consultez le site jQuery pour plus d'informations, mais stop() arrête l'animation et stop (true) efface la file d'attente, tandis que stop (true, true) efface la file d'attente et amène l'animation directement à la fin. J'ai ajouté quelques exemples à l'exemple pour montrer comment c'est fait, mais vous devrez généralement faire quelques essais pour bien l'utiliser. – adeneo

Questions connexes