不言自明,我希望。
回答
您的jQuery選擇器將隨機地錯過任何元素,因爲它尚未加載(通過瀏覽器)。
當腳本從瀏覽器到瀏覽器,頁面到頁面運行時,這將是不可預知的。
$(document).ready()是jQuery確保您希望在頁面加載上運行的代碼在瀏覽器中同時運行的方式。
它還提供了一種機制來堆疊不同的函數以在頁面加載上運行。如果您不使用它並且您有多個onLoad分配,則只會添加最後一個實際運行的分配。
$(document).ready()實際上在onLoad事件觸發前運行,通常 - 它在DOM加載後立即運行,而onLoad也等待所有圖像等在它下載之前下載。 – 2009-06-25 19:13:29
當您在DOM中選擇元素時,它們有時會工作,並且它們有時不起作用。
這隻取決於他們是否已加載。
但是,如果您在文檔的最末尾處插入腳本,它通常會沒問題。 (從那時起,它應該已經加載了所有的東西)。
這是學習jQuery的第一件事:如果您希望事件在您的頁面上工作,您應該在$(document).ready()函數內調用它。一旦DOM被加載並且在加載頁面內容之前,它內部的所有東西都會加載。
$(document).ready(function() {
// put all your jQuery goodness in here.
});
$(document).ready()函數比其他獲取事件的方法有很多優點。首先,您不必在HTML中添加任何「行爲」標記。你可以將你所有的JavaScript/jQuery分離到一個單獨的文件中,它更易於維護,並且可以避開內容。當我將鼠標懸停在鏈接上時,我從未喜歡在狀態欄中看到所有這些「javascript:void()」消息。當您將事件直接附加到標籤內時會發生這種情況。
在使用傳統JavaScript的某些頁面上,您會在標籤中看到「onload」屬性。問題在於它僅限於一個功能。哦,是的,它再次爲內容添加了「行爲」標記。 Jeremy Keith的出色書籍DOM Scripting向我展示瞭如何爲單獨的JavaScript文件創建addLoadEvent函數,以允許在其中加載多個函數。但它需要一些相當簡單的代碼。另外,它在窗口加載時觸發這些事件,這導致了$(document).ready()的另一個優點。使用$(document).ready(),你可以讓你的事件加載或啓動,或者在窗口加載前讓你想要它們做的任何事情。只要DOM被瀏覽器註冊,就可以儘早將其粘貼在括號內的所有內容都準備就緒,可以在用戶第一次看到頁面元素時立即隱藏並顯示效果和其他內容。
從http://docs.jquery.com/Tutorials:Introducing_ $(文件)。就緒()引用
Bassicly使用這個基本規則:
如果你的代碼涉及到DOM包裝你的代碼在$(文件)。就緒()。如果它不涉及DOM,那麼不要將它包裝在$(document)中。ready()
如果未包裝它,它只是普通的舊JavaScript,做你想做的事情,但會加載jQuery庫,很難說。
有使用
$(document).ready (function()) // or $(function())
1主要有兩個原因)它確保內的代碼只運行一次的DOM完全加載(這不包括加載圖像,Flash或其他資源,只是從HTML構建的DOM)。這意味着您可以將JavaScript放在HTML中的任何位置,而不是放在底部(使用香草JavaScript是唯一可以保證它可以在整個DOM上工作而不是在當前加載的位置)。除非你使用window.onload事件,這也保證了這一點,但只能使用一次。這使我想到了第二點;
2)它允許您在頁面加載時觸發多個函數,而不是使用使用香草javascript時使用的window.onload。這很好,因爲它意味着你不必(a)編寫你自己的函數來照顧它,b)擔心檢查是否已經有來自另一個庫的onload函數,c)花費幾年的時間去調試只是發現你的window.onload被別人的代碼覆蓋了。
加分:3)它看起來很酷,不是嗎? :P
其他說明:如果您沒有使用或操作DOM,那麼您的代碼不需要進入$(document).ready()函數內部。
把你的javascript文件放在html的底部,就在< /正文>之前,它會增加加載的速度 - 實際上速度並不快,但瀏覽器會在HTML之後加載JS,因此可以啓動在JS加載時呈現HTML。這又意味着用戶的屏幕上會出現比<頭>中的腳本早一秒的事件 - 並且在網絡中,分割秒數:)
- 1. JQuery沒有在Document Ready上執行
- 2. 爲什麼jQuery有時需要$(document).ready?
- 3. JQuery - $(document).ready()執行BEFORE元素加載
- 4. $(document).ready() - 它是如何執行的?
- 5. jQuery(document).ready和'''''
- 6. $(document).ready()沒有爲ajax加載的內容執行
- 7. $(window).load和$(document).ready?有什麼區別?
- 8. 與$(document).ready()有什麼不同?
- 9. jQuery $(document).ready()not firing
- 10. 什麼是'$(document).ready()'的非jQuery等價物?
- 11. 爲什麼我不能使用onClick在jQuery $(document).ready函數中執行函數?
- 12. 何時執行$(document).ready回調函數?
- 13. jQuery(document).ready()+等待焦點
- 14. ASP.Net,jQuery - $(document).ready(function()not firing
- 15. IE7 jQuery(document).ready()問題
- 16. 什麼時候應該使用$(document).ready?
- 17. 什麼是網站跟蹤軟件缺陷/缺陷?
- 18. 在$(document).ready()之後調用什麼jQuery事件?
- 19. 什麼是在jQuery的$(document).ready中添加javascript的正確方法Yii
- 20. jsdom和$(document).ready
- 21. $(document).ready not working
- 22. $(document).ready shorthand
- 23. JQuery:Rebind $(document).Ready()
- 24. window.open和$(document).ready
- 25. 什麼是`(function(document){...}(document));`
- 26. jQuery中的JSDoc兼容性(document).ready()
- 27. 在$(document).ready(...)旁加載一次? jQuery的
- 28. 這個算法有什麼缺陷?
- 29. 在$(document).ready()函數中生成閉包有什麼作用?
- 30. 爲什麼這個Javascript對象在$(document).ready之後沒有超出範圍?
因此,如果我不關心它何時運行,它就是完全合法?我希望它會比包裝在$(document).ready()中的版本更早運行。 – Larsenal 2009-06-25 17:56:56
如果它不涉及DOM,那麼我確定可以在ready()之前運行。 – 2009-06-25 17:58:04