2012-01-18 5 views
4

$(document).ready()에 많은 HTML이 생성되었습니다. 나는 간단한 창 시스템을 가지고있다. 그러나 그것뿐만 아니라 $(document).ready()에 생성됩니다 - 또한 일부 HTML 요소 (다른 JS 파일을 넣어 $(document).ready()). $(document).ready()이 호출 된 후에 창 시스템을 생성하고 싶습니다. 그렇다면 $(document).ready()에 등록 된 모든 코드가 완료된 후 호출 할 함수를 어떻게 처리해야합니까?

+2

는 $ (문서)를 많이 됐죠. 준비된()! ;-) – janhartmann

+0

그래서 document.ready()에 .ready()를 원하십니까? 이것은 jQuery가 작동하는 방식이 아닙니다. PHP의 WordPress와 달리 JavaScript의 이벤트 기반 모델로 인해 jQuery는 ready() 함수에 입력 한 모든 코드가 완료되었음을 알 수있는 방법이 없습니다. 따라서 document.ready() 다음에 호출되는 이벤트가 없습니다. 스스로 이벤트를 작성하고 기다릴 필요가 있거나 window.load()를 사용해야합니다. – Cole

답변

6

나중에 해고되는 또 다른 이벤트가 있습니다. 그것은 $ (window) .load(); 이것은 모든 리소스가로드 된 후에 시작됩니다.

는 그러나 아마 당신이 원하는 :

function loadWindowSystem(){ 
    // load window system here 
} 

$(document).ready(function(){ 
    // do some html stuff here 

    loadWindowSystem(); 
}) 

당신이 기능에 코드를 분리 할 수 ​​있습니다이 방법.

+0

참고 : 이미지뿐만 아니라 모든 리소스가로드 될 때 window.load가 발생합니다. –

+0

글쎄, 이것은 생성하기 위해 $ (document) .ready ("")를 사용하는 각 문서에서'loadWindowSystem()'을 호출해야한다는 것을 의미합니다. HTML ... 그리고 또한 .js로드는 중요하다고 말할 수 있습니다 ... – myWallJSON

+0

Didier, 고맙습니다. – timing

0

가이 기능을 후 아무것도 없다, 그래서 당신은 어떤 아약스 로더가있는 경우에만 모두 기다렸다가

편집 렌더링을 시작하는 것입니다 당신이 할 수 있다고 생각하지만 당신은 당신의 코드를 structuralize 그나마 내가 왜 궁금해 이것을 없애기 위해서.

0

$(document).ready()은 DOM로드가 완료된 직후에 호출됩니다. pageLoad()은 0 타이머에서 다음에 호출되지만 모든 부분 다시 게시 후에는 실행됩니다.

편집 : 추가 된 쪽지 추가 - 언급 된 pageLoad 기능이 jQuery와 별도로 ASP.NET을 사용하는 경우에만 계산됩니다. 당신이 뭔가 모든 $(document).ready() 통화 후 바로 발사 할 경우 추가 정보를 Here

2

를 참조하십시오, 당신은 당신의 페이지에 아무 곳이 넣을 수 있습니다 :

$(document).ready(function() { 
    setTimeout(function() { 
     // call your code here that you want to run after all $(document).ready() calls have run 
    }, 1); 
}); 

이것은 다른 모든 document.ready 전화와 함께 전화를받을 것이다 , 그러나 그것은 다른 모든 document.ready 호출이 끝난 후에 실행할 짧은 타임 아웃을 설정합니다.

3

나는 보통 setTimeout 사용하여 옹호하지 않습니다,하지만 당신은 더 추상적 인 접근 방식을 만들 @ jfriend00의 대답의 상단에 구축 할 수 있습니다 :

$(document).ready(function() { 
    setTimeout(function() { 
     $(document).trigger('afterready'); 
    }, 1); 
}); 

$(document).bind('afterready', function() { 
    // call your code here that you want to run after all $(document).ready() calls have run 
}); 
6
$(window).load(function(){ 
    //some code after ready 
    }); 
+1

답변을 둘러싼 많은 이야기가 여기에 있습니다. 이것은 묻는 질문에 대한 정확한 답변입니다. – JackArbiter

관련 문제