Как узнать с помощью jQuery, если элемент анимируется?

Я пытаюсь переместить некоторые элементы на странице, и во время анимации я хочу, чтобы "overflow: hidden" применялся к элементу, и "переполнение" возвращалось к "авто" после того, как анимация завершено.

Я знаю, что jQuery имеет функцию утилиты, которая определяет, анимируется ли какой-либо элемент, но я не могу найти его где-либо в документах

Ответ 1

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

Дополнительная информация: http://docs.jquery.com/Selectors/animated


Или:

$(elem)
    .css('overflow' ,'hidden')
    .animate({/*options*/}, function(){
        // Callback function
        $(this).css('overflow', 'auto');
    };

Ответ 2

В качестве альтернативы, чтобы проверить, не что-то не анимированное, вы можете просто добавить "!":

if (!$(element).is(':animated')) {...}

Ответ 3

Если вы хотите применить css к анимированным элементам, вы можете использовать псевдо-селектор :animated и сделать это следующим образом:

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

источник: https://learn.jquery.com/using-jquery-core/selecting-elements/

Ответ 4

$('selector').click(function() {
  if ($(':animated').length) {
    return false;
  }

  $("html, body").scrollTop(0);
});

Ответ 5

если вы используете анимацию css и назначаете анимацию с помощью специального class name, тогда вы можете проверить ее следующим образом:

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

Но убедитесь, что вы удаляете класс, который обрабатывает анимацию после завершения анимации.

Этот код можно использовать для удаления class name после завершения анимации:

$("#elem").on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
function(){ 
        $(this).removeClass("your_animation_class_name");
});