저는 모듈 패턴이라고 생각하는 자바 스크립트를 쓰고 있습니다. (틀린 용어를 사용하면 여전히 프로그래밍에 익숙하지 않아 용서해줍니다.) 모듈 패턴을 사용하여 문서 데이터를 검색하는 방법은 무엇입니까?
아래 스크립트
는 세 가지를 측정하고자 할 때 문서로드 :- 페이지를 스크롤 한 거리입니다.
- y- 오프셋은 문서 상단에 상대적으로
#eventSideBar
입니다. - 문서의 전체 높이입니다.
(function (exocet, $, undefined) { var scrollDistance = function() { return $('body').scrollTop() } var sideBarOffset = function() { return $('#eventSideBar').offset().top; } var allHeight = function() { return $('body').height(); } exocet.init = function() { console.log('Scroll distance: ' + scrollDistance() + ' Sidebar offset: ' + sideBarOffset() + ' Total height: ' + allHeight() ); }; }(window.exocet = window.exocet || {}, jQuery)); $(document).ready(function() { exocet.init(); });
콘솔이 로깅
sideBarOffset
입니다.
scrollDistance
은 항상 0을 반환하고
allHeight
은 +/- 약 1000px입니다.
나는 다음과 exocet.init
을 변경하는 경우 :
exocet.init = function() {
console.log('Scroll distance: ' + scrollDistance() +
' Sidebar offset: ' + sideBarOffset() +
' Total height: ' + allHeight()
);
$(document).scroll(function(){
console.log('Scroll is now: ' + scrollDistance());
});
};
그때 항상 정확한 스크롤 위치 값을 얻을. 이것은 옳은 결과를 얻지 만, 약간 hackish 보인다.
내 접근 방식에서 발생하는 것처럼 보이는 document
메서드를 연결하지 않고 데이터를 가져 오는 "적절한"방법이 있습니까? 당신이 필요로하는 것은 같은
'$ (window) .load()'에서'exocet.init()'를 호출하면 어떻게됩니까? – Malk
@Malk 비슷한 결과 - 첫 번째 경우와 동일합니다. 두 번째에서 scrollDistance는 약 1/4의 시간입니다. – verism
그것이 내 마지막 [jsbin] (http://jsbin.com/jeqag/1/)에서 작동하는 것처럼 보입니다. 문서 설정 및 결과는 어떻게됩니까? –