2013-02-17 3 views
0

다음과 같은 상황을 가지고 :GET 값 기능을 크기를 조정하고 다른 함수에

var height = $(window).height(); 
$(window).resize(function() { 
var getfactor1 = 680/697 
var posval1 = height*getfactor1 
}); 

을 다른 함수에서 나는 다음과 같은 한 :

if($firstBG.hasClass("inview")){ 
$firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 

을 내가 posval1의 가치를 얻을 수있는 방법 사용자가 브라우저 윈도우의 크기를 조절할 때마다 window.resize() 함수가 firstBG.css에 추가됩니다.

감사합니다.

답변

0

왜 $ firstBG.css()를 window.resize()에 넣지 않습니까?

+0

에 자사의 다른 기능에 있기 때문에! – supersize

1

또는 당신이 함수 여물 통과 시도 할 수 :

var height = $(window).height(); 
$(window).resize(function() { 
var getfactor1 = 680/697 
var posval1 = height*getfactor1 

myFunction(posval1); 

}); 

function myFunction(posval1){ 
    if($firstBG.hasClass("inview")){ 
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 
} 
1

또는 쉽게, 왜 창문 외부 posval1 기능의 크기를 조절 선언하지?

var height = $(window).height(), 
    posval1; 

$(window).resize(function() { 
    var getfactor1 = 680/697; 
    posval1 = height*getfactor1; 
}); 

if($firstBG.hasClass("inview")){ 
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
} 
+0

당신은 내 요점을 얻지 못했지만, 윈도우 크기 조정 기능에서 posval1 값이 필요합니다. firstBG 클래스가 resize 함수에서 값을 얻는 방법은? – supersize

+0

여기서 문제는 posval1 변수가 window resize 함수 내에서 선언 되었기 때문에이 함수 내에서만 유효하고 액세스 가능하다는 것입니다. posval1을 두 함수 밖에서 선언하면 범위가 일반화되고 액세스 할 수 있습니다 (액세스 권한을 말할 때 읽기 및 쓰기를 의미 할 때). –

0

resize 이벤트는 사용자가 창 크기를 조정할 때마다 발생합니다. 무언가를 변경하려면 해당 이벤트의 핸들러에서 수행해야합니다. 그렇지 않으면 값이 업데이트되지 않습니다. 그러나 일반적으로 posval1 변수가 resize 이벤트 처리기보다 높은 범위에 있으면 다른 곳에서도이 변수에 액세스 할 수 있지만 앞에서 설명한 것처럼 이벤트 처리기가 아닌 이상 코드의 다른 부분은 다시 실행되지 않습니다.

범위 예 :

var posval1; 

$(window).on('resize', function() { 
    posval1 = height * (680/697); 
}); 

// somewhere else 
console.log(posval1); 

posval1의 값은 윈도우가 아직 조정할 수 없기 때문에, 실행하지만 console.log() 도달시에 정의되지 않은 것이 대부분이다. 당신 일 수 있습니다. CSS 업데이트를 다른 기능으로 아웃소싱하고 시작시 한 번만 이벤트 핸들러에서 호출하십시오.

var windowHeight, pos, posval1; // etc 

var updateBg = function() { 
    if($firstBG.hasClass("inview")){ 
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 
}; 

updateBg(); // once 

$(window).on('resize', function() { 
    // calculate posval1 
    updateBg(); // every time on resize 
}); 
+0

답장을 보내 주셔서 감사합니다.이 질문은 논리적으로 들리지만 작동하지 않습니다 ... 나는 풀 코드와 함께 다른 답변을 게시 할 것입니다! – supersize

0
function newPos(x, windowHeight, pos, adjuster, inertia){ 
    return x + "% " + (-((windowHeight + pos) - adjuster) * inertia) + "px"; 
} 



function Move(){ 
    var pos = $window.scrollTop(); 


    if($firstBG.hasClass("inview")){ 
     var getfactor1 = 680/697; 
     var posval1 = height*getfactor1; 
     console.log(posval1); 
     $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 



    if($secondBG.hasClass("inview")){ 
     var getfactor2 = 1255/697; 
     var posval2 = height*getfactor2; 

....... 그래서

관련 문제