2011-12-01 2 views
0

jQuery.ready() 안에 모든 자바 스크립트 호출을 배치하여 액세스하기 전에 DOM이 완전히로드되었는지 확인하십시오. 그러나 함수 정의 (자신이 작성한 함수 정의)의 경우, 해당 함수를 배치하기 전에 (함수를 호출하기 전에) 배치하는 것이 가장 좋습니다. <body>의 시작 부분에? 또는 <body> 끝에요? 아니면 jQuery.ready() 안에 있습니까? 또는 그것은 단순히 중요하지 않습니다? 감사.문서에서 javascript 함수 정의를 배치 할 위치는 어디입니까?

+1

_ "사실상 동일한 _script 요소 또는 동일한 함수 범위 내에서 함수 선언이"호이스트 "되었기 때문에 호출되기 전에 함수 선언이 필요하지 않습니다. 즉, JS 인터프리터는 블록 시작 부분에 선언 된 것처럼 처리합니다. – nnnnnn

+0

@nnnnnn - 유용한 정보가 여기에 있습니다. js에 초보자로서, 나는이 같은 지식을 정말로 바르게 평가한다. 감사! – tamakisquare

답변

0

ready() 함수 안에 함수를 두지 마십시오.

준비 호출 위에 선언해야하며 이상적으로 모든 j는 html의 맨 아래에서 처리되는 것이 이상적입니다.

+0

감사합니다. 함수 ** 정의 ** 인 경우 html의 맨 위나 맨 아래에 배치하면 어떤 차이가 있습니까? – tamakisquare

+1

스크립트 요소는 문서 순서로 처리됩니다. 함수 선언이 하나의 스크립트 요소에 있고 호출하는 코드가 다른 스크립트 요소에있는 경우 함수를 호출 할 때 선언을로드해야합니다. – RobG

+1

@Kai Qing - document.ready 핸들러에서 함수를 선언하지 않는 이유는 무엇입니까? 그것들이 서로에 의해서만 호출되고 다른 이벤트 핸들러들에 의해 document.ready 내에서 셋업된다면 그것은 모든 것을 글로벌 범위 밖으로 유지하는 이점과 완벽하게 잘 작동 할 것입니다. 물론 document.ready 핸들러 외부의 코드에서 호출해야하는 함수도 외부에서 선언해야합니다. 어쩌면 당신은 이것을하지 말라는 좋은 이유가 있습니다. 그러나 그것이 무엇인지 설명하지 않으면 어떻게 알 수 있습니까? – nnnnnn

0

JavaScript를 본문의 맨 위나 맨 위에 배치하면 jQuery 준비가 필요합니다. IF DOM의 일부를 사용합니다. 바로 가기로, 당신은 너무처럼 $에 코드를 전달할 수 있습니다

$(function(){ 

    $("#domID").method(); 
}); 

그러나, 당신은 하단에 스크립트를 넣어이 모든 혼란을 포기 할 수 있습니다. 브라우저는 HTML을 위에서 아래로 읽습니다. domID에 액세스하는 스크립트가 ID가 domID 인 DOM 요소 아래에 표시되면 정상적으로 작동합니다. 위의 코드 스 니펫은 다음을 통해 더욱 단순화 될 수 있습니다.

$("domID").method(); 

참고로 항상 그런 것은 아닙니다. 캔버스 요소에 즉시 액세스 할 수없는 것으로 나타났습니다. $ 또는 $.ready을 사용하는 것이 더 안전 할 수 있습니다. 그런 다음 DOM 및 JavaScript가로드되는 방식에 익숙해지면 제거하십시오.

관련 문제