2013-02-07 75 views
0

我有一個應用程序使用ajax調用來加載內容。這些ajax調用只是檢索HTML。 Javascript是在另一個文件中。document.ready()函數之後和Ajax調用

完成AJAX調用後,我會調用一個函數,該函數應該儘快開始執行javascript。

這裏我留下一個小函數,它將從ajax調用中檢索一些代碼。

function loadPage(page) { 
    $(".container").html(""); 
    if(page == "page1") { 
     $.ajax({ 
      url: "/page1.php", 
      success: function(html){ 
       $(".container").html(html); 
       loadPage1Script(); 
      } 
     }); 
    }else if(page == "page2"){ 
     $.ajax({ 
      url: "/page2.php", 
      success: function(html){ 
       $(".container").html(html); 
       loadPage2Script(); 
      } 
     }); 
    } 
} 

之後,他們將執行loadPage1Script()或loadPage2Script()。

function loadPage1Script(){ 
    //Start the carousel plugin, for example 
} 

新代碼已被添加到HTML結構中。我應該打電話給$(document).ready();在執行代碼以附加所有事件處理程序之前在loadPage1Script()中?如果我不這樣做,是否有區別?如果我添加$(document).ready(),腳本的啓動速度會更快嗎? ?

function loadPage1Script(){ 
    $(document).ready(function(){ 
     //Start the carousel plugin, for example 
    }); 
} 

從jQuery的網站(http://api.jquery.com/ready/)摘自:

在大多數情況下,該腳本可以儘快的DOM分層已全部構建運行)傳遞給。就緒處理程序(是。保證後的DOM準備好執行,因此,這通常是連接的所有其他事件處理程序和運行其它jQuery代碼的最佳場所。

回答

1

如果您呼叫的loadpage功能你已位於被稱爲後

$(document).ready(function() { 
    ... 
}); 

然後它應該沒關係。此外,由於$.fn.html功能不是異步的,你將不得不在運行您的loadPageScript功能馬上沒問題

1

有沒有必要使用$(document).ready()的這些功能裏面,因爲由點他們正在運行的DOM元素,他們需要已經存在(你只需在調用函數之前將它們插入到頁面中)。

但是,您應該調用$(document).ready()中的原始loadPage函數以確保存在.container元素。

相關問題