2009-04-07 11 views
94

페이지에서 일부 요소를 이동하려고하는데 애니메이션이 발생하는 동안 애니메이션이 끝나면 "overflow : hidden"을 elemnt에 적용하고 "overflow"를 "auto"로 되돌리고 싶습니다. . 내가 jQuery를 알고jQuery에서 요소가 애니메이션으로 작동하는지 어떻게 알 수 있습니까?

몇 가지 요소가 애니메이션되고 있는지 여부를 결정하는 유틸리티 기능을 가지고 있지만 나는

+2

이 작업에 콜백을 사용합니다. – Mork0075

답변

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

더 많은 정보 워드 프로세서 어디서나 찾을 수 없습니다 http://docs.jquery.com/Selectors/animated


또는 :

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

예, 감사했습니다. 내가 어떻게 그것을 놓칠 수 있니? 빌어 먹을, 늙어 간다 –

+0

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

+0

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

5

"!"

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

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

+1

@amosmos 답변이 편집되고 커뮤니티가 승인했습니다. 그것이 올바른 곳으로 되돌아갑니다. – Bill

+1

위대한, 지금은 단지 그것이 허용 대답의 중복이야. BTW 지역 사회가 승인 한 것은 무엇을 의미합니까? – amosmos

-1

당신이 css 애니메이션을 사용하여 특정 class name를 사용하여 애니메이션을 할당하는 경우는, 다음과 같이 그것을 확인할 수 있습니다 뭔가 애니메이션되지 않은 경우, 당신은 간단하게 추가 할 수있는, 테스트

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

하지만 애니메이션이 끝나면 애니메이션을 처리하는 클래스 이름을 제거했는지 확인하십시오! 당신이 애니메이션 요소에 CSS를 적용 할 경우

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

OP가 jQuery 애니메이션을 사용 중입니다. –

+0

그냥 대안을 제안합니다. 그리고 당신은 애니메이션을 의미 했습니까? – KeepMove

+0

예, 저는 애니메이션을 의미했습니다. IMO 귀하의 답변은 완전히 오프 주제입니다. –

0

, 당신은 :animated 의사 선택기를 사용하여 다음과 같이 그것을 할 수 있습니다,

: 애니메이션이 완료된 후

이 코드는 class name을 제거하는 데 사용할 수 있습니다

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

소스 : https://learn.jquery.com/using-jquery-core/selecting-elements/

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

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

이 코드는 질문에 대답 할 수 있지만 문제를 해결하는 방법 및/또는 이유를 설명하는 추가 컨텍스트를 제공하면 대답의 장기적인 가치가 향상됩니다. 품질에 대한 답변을 얻으려면이 [how-to-answer] (http://stackoverflow.com/help/how-to-answer)를 읽으십시오. – thewaywewere

관련 문제