2011-03-01 71 views
2

在jQuery中,您可以將所有代碼封裝在$(function() { ... });中,並在DOM準備就緒時觸發它,但是如果要將它放在頁面中間的某個位置,該怎麼辦?在處理這段代碼之前,DOM準備好的事件不會啓動,它會被遺漏嗎?有沒有辦法保證它會被解僱?從外部調用DOM準備好的功能<head>?

+0

不「準備好」意味着整個文檔已被解析? (只是直覺,我不是一個web開發人員。) – delnan 2011-03-01 21:53:36

+0

@delnan:你會這麼想,但誰知道。我認爲它應該在DOM樹準備就緒時觸發。 JavaScript不是DOM樹的一部分...所以...我不知道。只是想確定。 – mpen 2011-03-02 07:34:36

回答

6

你可以把一個<script>..</script>塊在你的代碼的任何地方:

  • 如果你使用.ready()(或equivalent syntax)加載DOM時執行的代碼,當整個頁面加載它會被執行,無論您在何處放置ready()處理程序。

  • 如果您只需將代碼放在<script>標記內,那麼只要解析器到達代碼點,它就會被執行。只有當連接到網絡服務器將在瀏覽器下載整個HTML頁面之前發生故障,它處理的代碼 該塊之前

1

DOM準備不會觸發,直到整個DOM樹已被加載,所以它會工作。另外,如果您在DOM準備好已經解僱之後碰巧做了$(function() { ... }),那麼jQuery很聰明,只需馬上執行您的回調。

+0

哦,它呢?這很酷。很高興知道 :) – mpen 2011-03-02 07:32:19

3

不,DOM準備好的事件不可能在DOM準備好時觸發。無論您放置腳本的位置如何,它都會被解僱。

1

不,DOM準備好的事件不應該被觸發,直到DOM準備就緒,意味着直到它處理完最後一個結束標記並完全構建DOM。

你應該很好地把你的<script>標籤與jQuery準備好在頁面的任何位置。

1

DOM就緒事件將觸發。 在這種奇怪的情況下,dom ready事件將會觸發,但是你的內聯腳本失敗。