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

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

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

5 ответов

Решение
if( $(elem).is(':animated') ) {...}

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


Или же:

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

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

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

Если вы используете 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");
});

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

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

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

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

  $("html, body").scrollTop(0);
});
Другие вопросы по тегам