2012-01-11 1 views
0

, 나는 다음과 같은 구조를 볼에서 JS 이벤트를 설정하는 방법 :적절한 시간 (아직 프로토 타입, 3.0.x의) 내 레일과 함께 제공되는 rails.js에서

(function() { 
// ... 
document.on("click", ... 
})(); 

정확히 달성 무엇을 익명 함수에서 전체 코드의 래핑? DOM이로드되거나 문서 객체 만로드 될 때까지 코드를 지연시키는 유효한 방법입니까?

내 프로젝트에는 현재 Event.observe(document, 'dom:loaded', function() { ... } 블록 안에 많은 설정 코드가 있습니다. 내 코드를 리팩터링 할 때 위의 패턴을 채택해야한다면 궁금합니다.

답변

2

module pattern을 우연히 발견했습니다. 즉시 호출 된 함수 내부의 변수는 로컬이며 전역 이름 공간을 오염시키지 않으므로 유용합니다. 함수가 즉시 (최종 () 비트에서) 호출되기 때문에 timeing에 차이가없는 ethat하지

(function(){ 
    var something = 17; 
    //can use something inside here 
}()); 

//but not here anymore 

+0

고맙습니다. 그래서 dom : ready 앞에 문서 객체를 사용하는 데 아무런 문제가 없다고 생각합니다. – Jan

+0

문서를 조작 할 수는 있지만 이전과 같은 문제는 여전히 준비가되어 있습니다. 요소를 만든 후에 만 ​​요소를 조작 할 수 있습니다. – hugomg

1

자기 호출 아무 상관이없는, 바로 내부에 무엇을 트리거하는 익명 함수를 코드를 지연 시키면됩니다.

DOM 준비가 된 후에 코드 블록을 실행하려면 DOMready 수신기가 있어야합니다. 당신이 언급 한 코드가 Event.observe(document, 'dom:loaded', function() { ... }이라고 생각합니다.

+0

정적 HTML 컨텐트 뒤에 실행하려는 코드를 본문의 끝으로 넣는 것이 좋습니다. –