2014-04-08 73 views
0

我在我的網頁中使用ajax,並且在加載ajax頁面時將執行的ajax頁面中有一些javascript。但問題是,如何讓jquery在完成加載ajax頁面後才執行腳本?jQuery在一切準備就緒後執行腳本

我曾嘗試用:

$('#ajaxdiv').load(function() { 

} 

但它並沒有在所有運行代碼。如果我把它放到.ready(),那麼它會運行代碼,但不會在加載完所有內容後運行。

是否有可能有一段代碼只能在所有事情完全準備好之後執行?

+0

AJAX頁面?不知道我明白那是什麼。 – attila

+0

在jQuery的'.load()'中,URL參數是強制性的。功能最後。但我不太確定我是否100%理解這個問題。 – Amadan

+0

你能展示更多的代碼嗎?我假設你運行多重Ajax請求? $(document).ready()在文檔完全加載時執行,而不是在所有ajax請求完成時執行,您可能需要使用ajax函數的回調來運行代碼的其餘部分 – JanR

回答

0

您應該查看延期承諾對象。這是一篇很好的文章,解釋它是什麼/如何使用它。

Deferred對象 http://api.jquery.com/category/deferred-object/

http://css-tricks.com/multiple-simultaneous-ajax-requests-one-callback-jquery/ (示例代碼從下面的文章。)

$.when(
    // Get the HTML 
    $.get("/feature/", function(html) { 
    globalStore.html = html; 
    }), 

    // Get the CSS 
    $.get("/assets/feature.css", function(css) { 
    globalStore.css = css; 
    }), 

    // Get the JS 
    $.getScript("/assets/feature.js") 

).then(function() { 

    // All is ready now, so... 

    // Add CSS to page 
    $("<style />").html(globalStore.css).appendTo("head"); 

    // Add HTML to page 
    $("body").append(globalStore.html); 

});