2012-11-26 103 views
2

可以在單個html文件或單個javascript文件中使用多少個$(document).ready()函數?單個html文件或javascript文件中有多少個document.ready?

$(document).ready(function(){ 
    alert("first document ready"); 
    //do some action here 
}); 

$(document).ready(function(){ 
    alert("second document ready"); 
    //do some action here too 
}); 

如果我們可以使用無限,它們將如何被調用?他們會一行一行地執行還是有任何調用它的算法?

+1

已有9,000多家一些參考.... 。 –

回答

2

在某種程度上沒有限制(直到性能成爲問題)。他們只是文檔準備好時的事件監聽器。

它的不一樣,說Page_Load事件在ASP.NET C#


我一般限制在一個「文檔準備」功能,每個JavaScript文件但是,對於組織的目的。

2

嗯,我相信'盡你所能'。但我寧願保持我的代碼整潔。

1

您可以根據需要使用盡可能多的$document.ready()函數。 See this explanation.

儘管有這種能力,但我會盡可能少地限制使用此函數,以避免散播跨頁面加載的腳本。

1

只要你喜歡你可以定義爲document.ready許多聽衆。該事件將被解僱一次,每個聽衆都會打一次電話。

但是附着到事件的順序不能保證執行順序。沒有承諾第二個document.ready將在第一個之後開火。

+0

jQuery保證事件處理程序將按照t嘿,你好。 – nnnnnn

0

UNLIMITED。

我想你可以讓他們多,他們都將通過一個文檔時準備好執行一個。 我試過同樣的點擊事件,它的工作原理。

但是,爲什麼你會做這樣的事?

1

我們可以將很多監聽器附加到同一個java腳本事件。在執行開始之前沒有最大限制,導致腳本超時。 :)。 Java腳本默認是單線程的。所以一個接一個的執行會發生。我猜這個順序應該是我們附加事件的順序。但不確定。好問題。需要嘗試這個來查看訂單。

+0

jQuery肯定會按照它們附加的順序調用它們。 – nnnnnn

0

「如果我們可以使用無限的,它們將如何被調用?它們會一行一行地執行還是有任何調用它的算法?

你顯然無法附加字面上無限數量的處理器,但沒有具體的限制。

jQuery將在它們所連接的順序執行的處理程序 - 幕後的jQuery結合自己的處理程序到事件一次,並保持您所提供的所有處理程序的列表。

此事件處理代理的概念適用於處理與jQuery的約束,而不僅僅是文件準備等事件,雖然文件準備有一個特殊的情況下,如果你試圖後準備處理綁定文件已準備就緒,將立即執行(不是「立即」執行,因爲它是通過調用setTimeout()完成的,因此它是異步完成的,但是已經足夠了)。

相關問題