2012-08-13 26 views
5

舉個例子:如何jQuery.ready()把自身打個電話?

$(function(){ 
    //do stuff 
    $(function(){ 
     //do other stuff 
    }); 
}); 

課程代碼寫出來,這似乎就沒有任何意義。但是,與HTML元素工作的插件可以使用。就緒(),而它本身被主腳本。就緒元素上執行()。 jQuery如何處理這一切?它很明顯,但它有什麼特別之處?

回答

2

如果.ready()在DOM初始化後被調用,則傳入的新的 處理程序將立即執行。

這意味着在執行第一功能時,內一個將立即

另外執行

,jQuery的可以將多個功能結合到一個單一的事件,這將調用它們所有(假定沒有一個產生一個錯誤)

您可以測試通過執行已經加載的頁面的行爲:

jQuery(document).ready(function(){ 
     for(i=0;i<1000000;i++); 
     console.log('2'); 
    }); 
console.log('1'); 
+1

是不是「立即」作爲_synchronously_(前'。就緒()'返回)? – nnnnnn 2012-08-13 06:33:26

+0

是的,這是sinchronous。可以測試上執行此已經加載頁面: jQuery的(文件)。就緒(函數(){對於(I = 0; I <1000000;我++){;};的console.log( '2');});的console.log( '1'); – 2012-08-13 06:39:32

+0

我得到這個:'全球。就緒()開始,0毫秒; global .ready()END,8ms; plugin .ready()()START,11ms; plugin.ready()END,12ms'。其結果是恆定的我是否調用插件在開始或在全球的.ready結束。因此,插件中的.ready調用似乎在已經執行的.ready調用之後排隊 – Armatus 2012-08-13 07:36:45