Je dois arrêter l'animation et compléter instantanément toutes les animations en attente.
stop
ne fonctionne pas:
Disons que je animation qui se déplace élément qui est 0px
par 100px
et je l'utilise arrêt quand il a déménagé seulement 50px
. Le résultat sera un élément au 50px
. Le résultat que je veux est quand j'interromps l'animation, même si l'élément est à 50px
il sautera immédiatement à 100px
.
Comment est-ce que je fais cela?Achèvement immédiat de la file d'animation dans jQuery
3
A
Répondre
1
$.fn.stop() a l'option d'effacer la file d'attente et de passer à la fin.
Il suffit de faire quelque chose comme: $('#foo').stop(true, true);
0
trouvé cela à http://forum.jquery.com/topic/stop-true-true-animation-chains-and-callbacks
(function($){
$.fn.extend({
hardStop: function(){
return this.each(function(){
var e = $(this);
while (e.queue().length){
e.stop(false, true);
}
});
}
});
})(jQuery);
utiliser par
$("#element").hardStop();
Si cela ne fonctionne pas, peut-être changer votre code original:
$("#abc").stop().animate(...
+0
Est-ce que boucle infinie – Dani
0
Spécifiez manuellement le dernier état, ne soyez pas paresseux. Je suis sûr que vous pouvez le faire :)
$('#foo').stop(true, true);
$('#foo').css({x, '100px'});
Cela ne fonctionne pas quand j'ai plusieurs animations en file d'attente, il saute seulement à la fin de la première et rejette le reste. – Dani
C'est parce que votre sélecteur est trop spécifique. Dites qu'il y a 3 divs sur la page, # div-1, # div-2, # div-3. # div-1 et # div-2 sont au milieu d'une animation quand vous voulez les arrêter pour que vous puissiez animer # div-3, ou peu importe. Pour arrêter les animations en file d'attente, vous devez: $ ('# div-1, # div-2'). Stop (true, true); Pour arrêter toutes les animations sur la page, vous pouvez essayer: $ ('*'). Stop (true, true); – m4olivei