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