2011-09-21 2 views
7

간단한 사용자 정의 탭 모듈이 있는데, AJAX 요청으로 탭을로드합니다 ($(elem).load() 통해). AJAX로로드 된 각 페이지에는 JavaScript가 있습니다. 페이지가 처음으로로드되면 (AJAX가 아닌 URL의 직접 입력을 통해) 자바 스크립트가 완벽하게 실행됩니다. AJAX 탭을 통해 페이지에서 이동할 때 페이지의 자바 스크립트가 더 이상로드되지 않습니다.jQuery - AJAX로로드 된 내용이없는 경우 document.ready가 실행되지 않습니다.

강제로 실행할 수 있습니까?

답변

10

(즉, 도움이 경우 $(document).ready() 기능에 배치 소성을하지 않는 자바 스크립트는) 당신은 load() 기능의 콜백을 사용할 필요가 : 당신은에 $(document).ready에서 모든 작업을 넣을 수 있습니다

$(elem).load('source.html', function() { 
    // here you need to perofrm something what you need 
    ActionOnDocumentReady(); 
}); 

일부 기능 (ex ActionOnDocumentReady())을 호출하고 load() 콜백으로 호출합니다.

5

domeready 이벤트는 초기 DOM이 준비되어있을 때만 발생합니다 (예 : 이름 및 jquery-api 제안).

jquerys load()를 사용하고 해당 로딩이 완료되면 함수를 실행하려면 콜백 함수 (according to the api)를 사용해야합니다.

function dostuff(){ 
    // do some stuff here 
} 

두 경우 모두에서이 기능 화재 :

당신이 domready 및로드 이벤트 같은 일을 수행하려는 경우

, 가장 좋은 방법은 그것을위한 새로운 함수를 정의하는 것

$(function(){ // domready | shortcut for "$(document).ready()" 
    dostuff(); 
}) 

$('#something').load('script.php', function() { // callback on load() 
    dostuff(); 
}); 
3

$(document).ready() 코드를 새 방법으로 넣으십시오. 전화 번호는 methodA입니다. 이제이 methodA$(document).ready()에서 불러옵니다. 둘째, Ajax 요청이 성공한 후에도 동일한 메소드를 호출하십시오. 그것은 당신의 문제를 해결해야합니다.

관련 문제