2012-03-23 7 views
1

제 문제는 .hover 메서드를 사용하여 background-img의 x 위치를 얻는 것입니다. 내가 묻는 때 typeof 그것은 정의되지 않은으로 반환합니다. 내게 반환 값을 알려달라고 요청하면 "10px", 어떻게 변수에 올바르게 저장되는 정수 값을 만들 수 있습니까? 다음과 같이정의되지 않은 값을 정수 값으로 변환하는 방법은 무엇입니까? Javascript

내 기능 간다 :

$("#menu li").hover( 
    function() { 
     var xPos = $(this).css('background-position-x') 
     $(this).stop().animate({ 
      backgroundPosition: xPos + "px 0px" 
     }, 500); 
    }, 

    function() { 
     var xPos = $(this).css('background-position-x') 
     $(this).stop().animate({ 
      backgroundPosition: xPos + "px 35px" 
     }, 500); 
    } 
); 
+0

미래에 코드의 서식을 지정하려면 편집기 (**'{''**)의 코드 단추를 사용하십시오. –

+0

'background-position-x'는 표준이 아니며 모든 브라우저에서 지원되지는 않습니다. – elclanrs

+1

우선, 여러 값을 갖는 속성에서 jQuery 애니메이션을 사용할 수 없다고 확신합니다. 애니메이션 메서드에서 한 번에 하나의 값. – jfriend00

답변

1

당신은 단지 'PX'

var xPos = $(this).css('background-position-x').slice(0, -2); 
+0

멋지다. –

+0

들으니 다행이다. – jeremyharris

+0

나는'parseInt (xPos, 10)'. –

3

당신은으로 parseInt을 찾을 수 있습니다을 제거 할 수 있습니다() 함수는 당신이 찾고있는 무엇 : http://wap.w3schools.com/jsref/jsref_parseint.asp

var xPos = parseInt($(this).css('background-position-x'));

그 때까지 문자열을 평가할 것입니다. t는 숫자가 아닌 문자로 실행됩니다. 그래서 10px가 10이됩니다.

그러나 여러분이 작성한 함수를 모두 사용하고 있다면 연결하려는 첫 번째 "px"를 제거하면 작동합니다 :

var xPos = $(this).css('background-position-x'); 
$(this).stop().animate({backgroundPosition: xPos + " 0"}, 500); 
+0

+1 그러나, 일부 브라우저는 부동 소수점 표기법으로 저장되기 때문에'parseFloat'가 더 좋을 것입니다. 일반적으로'parseInt'는 브라우저에 의해 최적화되었으며,'parseFloat'도 마찬가지입니다. – vol7ron

관련 문제