63 votes

jQuery delay ne fonctionne pas

 $('.transparent').removeClass('transparent').delay(2000).addClass('not_transparent').delay(4000)
 

J'ai un div qui est semi-transparent et je veux ensuite le changer pour non transparent. Mais le jQuery .delay (); la méthode ne semble pas fonctionner ici. J'ai essayé .fadeIn (); au lieu de cela et cela fonctionne avec un délai mais cela ne fonctionne pas avec les classes changeantes.

137voto

user113716 Points 143363

.delay() est utilisé pour les éléments faisant partie d'un queue , comme les animations. Un simple addClass n'est pas mis en file d'attente.

Vous pouvez utiliser setTimeout .

 var trans = $('.transparent').removeClass('transparent');
setTimeout(function() {
    trans.addClass('not_transparent');
}, 2000);
 

Au lieu de cela, vous pouvez ajouter l'élément non mis en file d'attente à la file d'attente en utilisant .queue() , bien que je pense qu'un setTimeout serait meilleur.

 $('.transparent').removeClass('transparent').delay(2000).queue(function(nxt) {
      $(this).addClass('not_transparent');
      nxt();
});
 

0voto

user3884636 Points 41

.delay() ne fonctionne pas avec la balise .addClass() dehors d'une fonction, utilisez simplement:

delay(); function delay(){ $('.pgtitle').delay(5000).fadeIn(0).addClass('animated bounceInDown'); }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X