Comment puis-je savoir avec jQuery si un élément est en cours d'animation?

J'essaie de déplacer certains éléments sur la page, et pendant le temps que l'animation se produit, je veux avoir" overflow:hidden "appliqué à un elemnt, et" overflow "revenir à" auto " Une fois l'animation terminée.

Je sais que jQuery a une fonction utilitaire qui détermine si un élément est animé mais je ne le trouve nulle part dans les documents

97
demandé sur James 2009-04-07 14:03:54

5 réponses

if( $(elem).is(':animated') ) {...}

Plus d'infos: http://docs.jquery.com/Selectors/animated


Ou:

$(elem)
    .css('overflow' ,'hidden')
    .animate({/*options*/}, function(){
        // Callback function
        $(this).css('overflow', 'auto');
    };
193
répondu James 2009-04-07 11:49:14

Sinon, pour tester si quelque chose n'est pas animé, vous pouvez simplement ajouter un "!":

if (!$(element).is(':animated')) {...}
5
répondu Tim 2015-08-24 11:07:36

Si vous voulez appliquer css aux éléments animés, vous pouvez utiliser le pseudo sélecteur :animated et le faire comme ceci,

$("selector").css('overflow','hidden');
$("selector:animated").css('overflow','auto');

Source : https://learn.jquery.com/using-jquery-core/selecting-elements/

0
répondu Lucky 2016-08-25 08:23:46
$('selector').click(function() {
  if ($(':animated').length) {
    return false;
  }

  $("html, body").scrollTop(0);
});
0
répondu anand vishwakarma 2017-06-26 13:30:03

Si vous utilisez css animation et d'attribuer l'animation par l'utilisation de class name, alors vous pouvez le vérifier comme ceci:

if($("#elem").hasClass("your_animation_class_name")) {}

Mais assurez-vous que vous supprimez le nom de classe qui gère l'animation, Une fois l'animation terminée!

Ce code peut être utilisé pour enlever les class name une fois l'animation terminée:

$("#elem").on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
function(){ 
        $(this).removeClass("your_animation_class_name");
});
-1
répondu KeepMove 2015-06-22 22:20:02