2012-04-30 8 views
4

J'ai été à jouer avec un menu de navigation jQuery, et je fait une maquette de celui-ci pour l'amour des exemples: http://jsfiddle.net/DerFlatulator6/3jYhh/1/jQuery .animate() « bascule »

J'avais un problème où il ferait assez bien exactement le contraire que je voulais faire. Mon code pour l'événement était en vol stationnaire comme celui-ci:

$(this) 
    .addClass('selected') 
    .children('ul') 
     .animate({'height': 'toggle'}, 300); 

Après quelques bricolages, je suis venu avec cette

$(this) 
    .addClass('selected') 
    .children('ul') 
     .css('height', 'toggle') 
     .animate({'height': 'toggle'}, 300); 

Ce qui fonctionne, mais je ne sais pas pourquoi! Quelqu'un peut-il expliquer exactement ce qui se passe? Une question secondaire ... Vous remarquerez que le violon a un menu à 3 niveaux, où le code est isolé pour les menus déroulants verticaux et horizontaux, serait-il possible d'écrire une fonction pour les couvrir tous les deux, ou devrais-je le laisser tel quel?

+1

Alors, vous souhaitez que nous vous expliquions pourquoi votre code fonctionne? – adeneo

+0

Je sais, ça a l'air idiot, mais je préfère savoir _why_ que ça marche, donc je peux améliorer mes connaissances en matière de connaissances, plutôt que de prendre pour acquis qu'il faut continuer. – azz

+0

Eh bien, 'animate' toggle fait juste cela, bascule la valeur. Lors de la première utilisation de 'css()' pour mettre la hauteur à zéro, en utilisant également toggle, vous inversez l'effet de l'animation. – adeneo

Répondre

2

animate({'height': 'toggle'}, 300) est comme Animer la hauteur du courant à 0 si la hauteur est plus 0 ou de 0 à animate précédent si le courant est 0.

de la documentation

En plus des valeurs numériques, chaque la propriété peut prendre les chaînes 'show', 'hide' et 'toggle'. Ces raccourcis permettent de masquer et d'afficher des animations prenant en compte le type d'affichage de l'élément .

+0

Devrait-il être «hauteur»: «bascule»? – MacMac

+0

@BurningtheCodeigniter merci fixé. – jcubic