fondu dans les éléments de la liste séquentielle avec jQuery
Je suis en train de construire un portefeuille de page qui contient une liste des différents projets (dans une liste non triée). Au chargement de la page je veux avoir chaque "li" pour le fondu, l'un après l'autre. J'ai réalisé cette manière:
var eT = 0;
$('.everything').hide().each(function() {
$(this).delay(eT).fadeIn('slow');
eT += 200;
});
Le problème que j'ai, c'est que chaque li aura une classe (ou plusieurs) en fonction du type de travail (web, print, etc) qu'il représente. Il y a une navigation sur le côté qui permet de filtrer le type de travail à l'écran. Ce que j'ai rencontrés, c'est que si je clique sur les filtres, tandis que l'animation est toujours en cours de chargement dans les éléments, les choses deviennent vraiment pénibles.
Voici le template de la page travail à l'heure actuelle:
http://jjaakk.miller-interactive.com/templates/work.html
J'ai essayé beaucoup de choses, mais avec un succès limité. Des idées sur la façon de faire ce travail dans un cadre plus stable?
J'ai essayé d'ajouter .stop() sur un clic, mais il n'a pas fonctionné comme je l'ai prévu.
OriginalL'auteur Jonathan Miller | 2011-04-13
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème était lié à une limitation avec jQuery delay(). Celui-ci utilise javascript standard setTimeout et clearTimeout comme suggéré par le jQuery delay() de l'api.
OriginalL'auteur nhavens
Je sais que vous avez dit que vous avez essayé d'ajouter le .stop() sur cliquez sur. Le code suivant est exactement ce que fait, mais fonctionne très bien pour moi. Si ce n'est pas ce que vous cherchez, veuillez expliquer dans les commentaires.
Travail Démo
Voici ma fonction:
code $('#secondary ul li a').click(function(){ var llid = $(this).attr('id'); var eT= 0; $('.' + llid).each(function(){ $('.everything').hide(); $(this).delay(eT).fadeIn('slow'); eT += 200; }); });
Je vois ce que tu veux dire à propos de la superposition des animations. Je pense que le problème est lié à une limitation avec jquery delay(). Voir la case juste au-dessus de l'Exemple ici. J'ai posté une deuxième réponse qui utilise la norme de javascript setTimeout et clearTimeout.
OriginalL'auteur nhavens
Multiples retard par index
OriginalL'auteur Hussein