2010-10-25 6 views
3

J'ai une liste que j'aimerais voir apparaître et disparaître dans chacun des LI avec un délai entre le prochain li. Je pense que je devrais être capable de parcourir la liste, mais je ne suis pas en train de faire une boucle. Quelque chose avec index?jQuery Fondu dans l'élément LI, fondu sortant et délai(); next LI, fade in, fade out

$('#content li').hide(); 
$('#content li').each(function(n){ 
$(this).delay().fadeIn('li').delay().fadeOut(); 
//how to I start over in the LI again? keep looping? 
} 

Merci pour vos idées, idées et/ou notre aide! Je vous en suis reconnaissant.

+0

Chaque élément de jQuery possède sa propre file d'animation. Voir http://stackoverflow.com/questions/505434/jquery-animation-queues-across-multiple-elements pour savoir comment lier un tas d'effets ensemble. (Ainsi dans votre chaque fonction, vous ajouteriez chaque élément au tableau d'alertes.) –

Répondre

21

Quelques problèmes avec votre code

fadeIn peut prendre comme paramètres durée, l'assouplissement et une fonction de rappel

donc passer li ne fait rien ..

Vous pouvez utiliser la fonction de rappel pour initier l'animation de la prochaine li en ligne ..

comme si

function InOut(elem) 
{ 
elem.delay() 
    .fadeIn() 
    .delay() 
    .fadeOut( 
       function(){ InOut(elem.next()); } 
      ); 
} 

et la première fois juste faire

$('#content li').hide(); 
InOut($('#content li:first')); 

Démo à http://www.jsfiddle.net/gaby/S5Cjm/

Si vous voulez que la boucle pour aller à changer pour toujours alors la fadeOut avec le rappel à

.fadeOut(
      function(){ 
      if(elem.next().length > 0) // if there is a next element 
       {InOut(elem.next());} // use it 
      else 
       {InOut(elem.siblings(':first'));} // if not, then use go back to the first sibling 

      } 
     ); 

Démo à http://www.jsfiddle.net/gaby/S5Cjm/1/

+0

Merci Gaby! jsfiddle.net est tueur btw ... – jasonflaherty

+0

Ceci est un code vraiment beau! Merci! –