2012-10-09 97 views
3

如果在頁面中有兩個需要在文檔加載完成時調用的javaScript函數。是否有可能任何函數都可以先執行,否則它會成爲首先執行的第一個函數?jQuery就緒回調的調用順序

因此,如果使用jQuery,如果你有以下代碼:

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

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

它可能發生function2首先執行或將function1總是首先被執行?

+1

你的腳本將被讀取並通過線 –

+2

這什麼都沒有做與純JavaScript執行生產線,這是100%依賴於如何的jQuery實現'$(document).ready()'方法。 –

+1

@ Mr.Alien - 這不是問題。他基本上想知道事件排隊的規則(如果有的話)。 –

回答

7

jQuery的準備使用Deferred object system

ready: function(fn) { 
    // Add the callback 
    jQuery.ready.promise().done(fn); 

    return this; 
}, 

(從source code

documentation指出

回調中他們除了中依次加入

所以,是的,你的回調將被執行的順序執行。

3

如果你想這些功能,以便執行,你爲什麼不只是寫:

$(document).ready(function(){ 
    function1(); 
    function2(); 
}); 
+0

「我認爲這是可能的,因爲準備好的事件被稱爲異步」:這是錯誤的。 JQuery確保執行順序是添加順序(請參閱我的答案)。 –

+0

你是對的;) –

+0

我不能將這些功能放在一起,因爲它們基於頁面中的單獨事件。所以它們可能沒有一個,其中一個或兩個都出現在文檔中。 –

0

最好讓使用回調函數,以確保有關的功能的執行順序

+0

@perroloco的方式也做得很好... – prady00

+1

你是什麼意思的「使用回調函數」?這與它有什麼關係? –