Как узнать с помощью 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);
});