2011-03-01 3 views
2

jQuery에서 모든 코드를 $(function() { ... });에 랩핑 할 수 있으며 DOM 준비가 완료되면 실행시킬 수 있지만, 페이지 중앙에 그 코드를 넣으려면 어떻게해야합니까? 그 코드 덩어리를 처리하기 전에 DOM 준비 이벤트가 실행되지 않을 수 있습니다. 그러면 놓치게 될까요? 그것이 해고 될 것임을 보장 할 방법이 있습니까?<head>에서 DOM 함수를 호출 할 준비가 되었습니까?

+0

"준비"는 전체 문서가 구문 분석되었음을 의미하지 않습니까? (직관력, 나는 웹 개발자가 아니다.) – delnan

+0

@delnan : 당신은 그렇게 생각할 것이다.하지만 누가 알겠는가. 나는 그것이 DOM 트리가 준비되면 발사되기로되어 있다고 생각한다. JavaScript는 DOM 트리의 일부가 아니기 때문에 ... 잘 모르겠습니다. 그냥 확인하고 싶었어. – mpen

답변

6

당신은 어디서든 코드에서 <script>..</script> 블록을 배치 할 수 있습니다 :

  • 당신은 DOM이로드 될 때 코드를 실행하는 .ready() (또는 equivalent syntax)를 사용하는 경우, 그것은 전체 페이지가로드 될 때 실행됩니다, 어디서든 ready() 처리기를 배치했는지에 관계없이

  • 코드를 <script> 태그 안에 넣으면 파서가 코드의 해당 지점에 도달 할 때마다 실행됩니다. 브라우저가 전체 HTML 페이지를 다운로드하기 전에 웹 서버의 뜻에 연결이 실패 할 경우에만 코드 의 덩어리를 처리하기 전에

1

전체 DOM 트리가로드 될 때까지 DOM 준비가 실행되지 않으므로 작동합니다.

DOM 준비가 완료된 후 $(function() { ... })을 수행하면 jQuery가 똑똑하고 즉시 콜백을 실행합니다.

+0

오, 맞나요? 멋지다. 알아 둘만한 :) – mpen

3

아니요, DOM 준비가되지 않은 경우 DOM 준비 이벤트가 실행되지 않을 수 있습니다. 스크립트를 저장할 위치와 상관없이 해고 될 것입니다.

1

아니요, DOM 준비 이벤트는 DOM이 준비 될 때까지 실행되어서는 안됩니다. 이는 마지막 닫기 태그를 처리하고 DOM을 완전히 구성 할 때까지 발생해야합니다.

<script> 태그를 jQuery와 함께 페이지의 아무 곳에 나 배치해도 괜찮습니다.

1

DOM 준비가 이벤트가 발생합니다. 그런 이상한 경우 dom ready 이벤트가 발생하지만 인라인 스크립트가 실패합니다.

관련 문제