요소가 애니메이션되고 있는지 jQuery로 어떻게 알 수 있습니까?


101

페이지에서 일부 요소를 이동하려고합니다. 애니메이션이 발생하는 동안 요소에 "overflow : hidden"을 적용하고 애니메이션이 완료되면 "overflow"를 "auto"로 되돌리고 싶습니다.

jQuery에는 일부 요소가 애니메이션되는지 여부를 결정하는 유틸리티 기능이 있지만 문서의 어느 곳에서도 찾을 수 없습니다.

답변:


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

더 많은 정보 : https://api.jquery.com/animated-selector/


또는:

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

네 그게 다예요, 감사합니다. 내가 어떻게 놓칠 수 있니? 젠장, 난 늙어 가고있어

참고로, 콜백에서 "overflow : auto"를 프로그래밍하여 CSS 스타일을 덮어 쓰지 않으려면 .css('overflow', ''). 빈 문자열을 전달하면 일반적으로 요소의 스타일에서 해당 속성이 모두 제거됩니다. 이것이 문서화 된 동작인지 확실하지 않지만 매우 유용한 트릭입니다.
Ward DS

2
CSS 애니메이션을 지원하지 않는다고 생각합니다.
Gqqnbig

5

또는 애니메이션이 아닌 것이 있는지 테스트하려면 "!"를 추가하면됩니다.

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

이것은 사실이 아닙니다 ... jquery 'is'의 반대는 'not'이 아닙니다. 'not'은 jquery 객체에서 필터링 된 요소를 제거합니다. 당신은 당신이 애니메이션되지 개체를 확인하려면if (!$(element).is(':animated')) {...}
amosmos

1
@amosmos 답변이 수정되고 커뮤니티에서 승인되었습니다 .. 올바른 위치로 롤백했습니다.
Bill

2
좋아요, 지금은 받아 들여진 답변의 중복입니다. BTW 커뮤니티 승인이란 무엇을 의미합니까?
amosmos

@amosmos 정지 건지
에릭 시세

1

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");
});

OP는 jQuery animaiton을 사용하고 있습니다.
Michał Perłakowski 2015

대안을 제안하는 것뿐입니다. 그리고 애니메이션을 의미 했습니까?
Ari

네, 애니메이션을 의미했습니다. IMO 귀하의 답변은 완전히 주제에서 벗어났습니다.
Michał Perłakowski 2015


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

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

이 코드는 질문에 답할 수 있지만 문제를 해결하는 방법 및 / 또는 이유에 대한 추가 컨텍스트를 제공하면 답변의 장기적인 가치가 향상됩니다. 양질의 답변을 제공 하려면방법 답변 을 읽어 보세요.
thewaywere
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.