2013-08-13 6 views
0

페이지의 스크롤 위치에 따라 몇 가지 조건 이벤트가 있습니다. 번만 마지막으로 실행해야하는 이벤트를 제외하고 모든 것이 부풀어 오른다.. 여기 내 코드는 다음과 같습니다.jQuery : 스크롤 이벤트와 하나()

function curScroll() {  
    var scrollX = $(window).scrollTop(); 
    var pointA = $('#pointA').offset().top; 
    var pointB = $('#pointB').offset().top; 

    if (scrollX < pointA) { 
     $('#something').removeClass('middle').addClass('top'); 
    } else if ((scrollX >= pointA) && (scrollX < pointB)) { 
     $('#something').addClass('middle').removeClass('top'); 
    } else if (scrollX >= pointB) { 
     $('#something').removeClass('middle top'); 
     // DO SOMETHING JUST ONCE, NOT EVERY TIME USER SCROLLS TO THE POINT 
    } 
} 

나는 하나의() 함수가 방법이라고 가정합니다. 문제는 필수 "이벤트"매개 변수입니다.

사용자가 pointB로 스크롤 할 때마다 실행되는 맞춤 트리거()를 첨부해야합니까? 다른 방법이 있습니까?

아이디어에 감사드립니다.

+0

무엇을하려하십니까? 나는 당신의 질문을 얻지 못합니다. – putvande

+0

putvande, 제 원래 코드는 꽤 복잡합니다 (많은 애니메이션, fadeIns 등), 나는 그것을 내 문제를 설명하기 위해 단순화하려고했습니다. 그러나 Roy가 제안한 것처럼 아주 명백한 해결책은 깃발을 추가하는 것이 었습니다. 고맙습니다! –

+0

다음과 같이 할 수 있습니다. http://jsfiddle.net/gFXcm/5/이 방법으로 세 가지 이벤트가 한 번만 발생합니다. – Stano

답변

1

완료 시점을 나타내는 플래그를 추가하는 것은 어떻습니까?

// DO SOMETHING JUST ONCE, NOT EVERY TIME USER SCROLL TO THE POINT 
if (!('doneIt' in curScroll)) { 
    curScroll.doneIt = true; 
    // ...do stuff... 
} 
+0

어 - 오, 나는 그 문제를 과소 평가할 정도로 심한 경우를 겪었습니다. :) 고마워, 분명히 효과가있다. –