2012-11-21 2 views
2

내가 메뉴 LI에 따라 애니메이션 메뉴의 배경을 얻으려고JQuery 배경 애니메이션 - 이것이 올바른 방법인가요?

내가 가진 스크립트가 지금까지입니다 http://jsfiddle.net/d9LHV/70/

$(function() { 
    $('.top-nav ul li').mouseenter(function() { 
     var position = $(this).position() 
     $(this).parent().animate({ 
      'backgroundPosition': position.left}, {duration: 150}) 
    }) 
    .mouseout(function() { 
     $(this).parent().animate({}) 
    }) 
}); 

가 작동하는 것 같다하지만 뭔가가 jQuery를하지만 대한 오프 느낌 jQuery에 대한 경험이 없으므로 약간의 의견을 듣고 싶습니다.

.hover를 사용하거나 .mouseout 부분을 제거하면 애니메이션이 급격히 고르지 않게됩니다.

결과를 얻는 더 좋은 방법이 있습니까? 아니면 내 논리와 함께 뭔가가 떨어져 있기 때문에 내가 왜 원활하게 작동하도록 빈 mouseout가 필요 이해할 수 없기 때문에.

+1

몇 군데에 세미콜론이 누락되었습니다. 또한'{duration : 150}'은 필요 없으며'150'은 중괄호없이 자신 만의 역할을합니다. 또한 빈'{}'는 두 번째'animate()'함수에서 필요하지 않습니다. – diggersworld

+0

많은 감사하겠습니다. 나는 그것을 조금 닦았지만 세미 컬럼이 어디로 가야하는지 모르겠습니다. 위치 변수 다음에 하나 있다고 가정합니까? 나는 마우스 오버 나 호버 (hover) 없이는 작동하지 않는 이유가 조금있다. 나는 그것이 효과적이기 때문에 중요하지 않다고 생각한다. 나는 단지 새로운 라이브러리에 들어갈 때 적절한 습관을 배우기를 원한다. –

+0

세미콜론을 표시하기가 쉽기 때문에 대답을 추가했습니다. – diggersworld

답변

1

음이 얻는 이유 흠칫 고르지 때문에 같은 요소에 발사 여러 애니메이션 이벤트의 모든, 그 때문에 모두를 대기열에 넣고 차례대로 실행합니다. 당신이 할 수있는 일

는 다음과 같이, 다른 애니메이션을 시작하기 전에 .stop() 기능을 사용할 수 있습니다 :

$(function() { 
    $('.top-nav ul li').mouseenter(function() { 
     var position = $(this).position(); 
     $(this).parent().stop().animate({'backgroundPosition': position.left}, 150); 
    }); 
});​ 

데모 여기에 사용 :이 도움이 http://jsfiddle.net/pulkitm/d9LHV/71/

희망을!

+0

예! 이것은 이제 의미가 있습니다. 나는 .stop을 생각하지 않고 대신 mouseout을 사용하여 함수를 종료했습니다. 나는 무언가가 맞지 않았다는 것을 알고 있었지만 그것에 손가락을 대지 못했습니다. 고마워,이게 내가 찾던 바로 그거야! –

+0

물론 아닙니다. 오른쪽의 녹색 체크 표시를 클릭하십시오. –

+0

네, 확인 했어요. 좋은! :) –

0

나는 이런 식의 구조를 것 (세미콜론 포함) :

$(function() { 
    $('.top-nav ul li').mouseenter(function() { 
     var position = $(this).position(); 
     $(this).parent().animate({ 
      'backgroundPosition': position.left 
     }, 150); 
    }) 
    .mouseout(function() { 
     $(this).parent().animate(); 
    }) 
});​ 
+0

그 덕분에 jfiddle은 "정리하다"는 다음 줄의 전환 시간을 떨어 뜨렸지만 어떤 이유로 든 내 로컬 환경에서 작동하지 않습니다. –

관련 문제