Question

ce qui ne va pas dans ce code? Je suis en train d'obtenir cet effet: fadeOut(500) et attr('class','myClass') retardé de 600 millisecs .. delay(600) puis à nouveau, et fadeIn(500). Les retards se produisent correctement mais le attr() n'est pas retardé, il se déclenche quand #myDiv est encore fane! : '(

$('#myDiv').fadeOut(500)
           .delay(600)
           .attr('class','myClass')
           .delay(600)
           .fadeIn(500);  
Était-ce utile?

La solution

Le .delay() affecte uniquement la file d'attente d'animation ou fx (sauf si vous spécifiez une autre file d'attente spécifique). Gardez à l'esprit que enchaînant et faire la queue sont 2 concepts distincts, l'utilisation continue Enchaînement du même ensemble jquery, mais c'est une chose totalement différente que les files d'attente d'événements sur les éléments de cet ensemble.

Pour que le .attr() appel affecté, vous devez l'ajouter comme un rappel à cette même file d'attente en utilisant .queue() , comme ceci:

$('#myDiv').fadeOut(500)
           .delay(600)
           .queue(function(next) { $(this).attr('class','myClass'); next(); })
           .delay(600)
           .fadeIn(500); 

Notez également il y a .addClass() , .removeClass() et href="http://api.jquery.com/toggleClass/" rel="noreferrer"> .toggleClass() méthodes disponibles qui peuvent faire un peu plus propre:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top