>웹 프론트엔드 >JS 튜토리얼 >jquery 이벤트 hover, mouseenter 및 mouseleave는 애니메이션을 한 번만 트리거합니다.

jquery 이벤트 hover, mouseenter 및 mouseleave는 애니메이션을 한 번만 트리거합니다.

黄舟
黄舟원래의
2017-06-28 10:05:182721검색

jquery hover mouseenter mouseleave 이벤트는 한 번만 트리거됩니다.animation

jquery.mouseenter(function(){
    $(div).animate({'margin-top':'100px'},1000)
})
jquery.mouseleave(function(){
    $(div).animate({'margin-top':'200px'},1000)
})

마우스를 특정 div로 이동하고, mouseenter 이벤트 및 애니메이션을 트리거하고, 밖으로 이동하여 mouseleave 이벤트 및 애니메이션을 트리거하지만 마우스를 뒤로 이동할 때 애니메이션이 여러 번 반복되어야 합니다. 애니메이션이 실행되는 동안 즉, 마우스가 애니메이션을 통과한 후 mouseenter 및 mouseleave 이벤트가 어떻게 트리거되지 않을 수 있습니까? div의 경우 애니메이션이 다시 나타나지 않습니다. 애니메이션이 완료된 후에만 애니메이션이 반복됩니다.

stop 메소드를 사용할 수 있습니다:

$(div).stop(false, true).animate({'margin-top':'100px'},1000);

stop()의 첫 번째 매개변수가 true이면 현재 애니메이션 queue을 즉시 지우는 것을 의미하며 기본값은 fx입니다. 두 번째 매개변수가 true이면 현재 실행 중인 애니메이션이 즉시 종료 상태로 설정됨을 나타냅니다.

애니메이션 실행 전 판단:

if (!$(obj).is(':animated')) {    // to do something
}

선택한 요소가 애니메이션 상태가 아닌 경우 애니메이션이 실행됩니다. 그렇지 않으면 무시하세요

^_^ (이전에 명확하게 답변된 질문에 직면했다는 표현)

이것을 @Humphry가 "애니메이션 원자성 문제"라고 부릅니다. 즉, 애니메이션 작업이 비재진입 원자 프로세스인 경우 코드에서 이 기능을 구현하는 방법입니다.

여기에서 매우 명확한 답변을 찾을 수 있습니다. 대답은 분명한 마킹 방법입니다. 애니메이션할 요소를 정렬하고, 애니메이션이 시작될 때 마크를 설정하고, 끝날 때 제거합니다(콜백 함수 사용). 로고가 있는 경우 애니메이션을 시작하는 이벤트가 발생하면 안 됩니다.

위 내용은 jquery 이벤트 hover, mouseenter 및 mouseleave는 애니메이션을 한 번만 트리거합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.