2010-10-05 6 views
0

Code:retard jQuery entre deux animations

$("#telecomGrayscale", this).stop().animate({ top: '467px' }, 
    { duration: 400 }).delay(800).queue(function() { 
       $("#boxcaptionTelecom", this).stop().animate({ top: '272px' }, { duration: 900 }); 
       }); 

Le code ci-dessus ne fonctionne pas au besoin. La 2ème animation qui se trouve dans la file d'attente() n'est pas en cours de fonctionnement.

J'ai juste besoin de retarder la seconde animation. Également essayé setTimeout et setInterval n'a pas pu les faire fonctionner.

+0

Pourriez-vous au moins révéler exactement comment il ne fonctionne pas au besoin? Ne fait-il pas la deuxième animation du tout? Cela ne retarde-t-il pas la 2ème animation comme prévu? – Thomas

+0

La 2ème animation ne se produit pas du tout. –

Répondre

2

Dans votre deuxième animation, le this est pas ce que vous pensez qu'il est, de sorte que le sélecteur avec this en contexte est très probablement vide.

Essayez si cela fonctionne:

var self = this; 
$("#telecomGrayscale", self) 
    .stop() 
    .animate(
     { top: '467px' }, 
     { duration: 400 } 
    ) 
    .delay(800) 
    .queue(
     function() { 
      $("#boxcaptionTelecom", self) 
       .stop() 
       .animate(
        { top: '272px' }, 
        { duration: 900 } 
       ); 
      return $(this).dequeue(); 
     } 
    ); 
+0

Merci !! .. n'avais aucune idée de 'ceci'. –

2

Je pense qu'il devrait être en chaîne:

$("#telecomGrayscale", this).stop().animate({ top: '467px' }, 
{ duration: 400 }).delay(800).animate({ top: '272px' }, { duration: 900 }); 

modifier: Pardonne mon erreur. Si vous voulez le faire sur deux éléments différents, alors vous devez faire le premier paramètre de queue() 'fx', puis, en second paramètre, votre fonction. Regardez la documentation de la fonction à http://api.jquery.com/queue/

+1

On dirait qu'il essaie d'animer différents éléments, cependant. – Thomas

+0

Oui, il y a deux éléments. –

Questions connexes