讀古今文學網 > 鋒利的jQuery(第2版) > 附錄A 關於$(document).ready() 函數 >

附錄A 關於$(document).ready() 函數

A.1 $(document).ready函數介紹

學習jQuery的第1個步驟就應該學習$(document).ready函數。例如要在頁面上運行一個JavaScript函數,那麼就應該將它寫在$(document).ready函數內。在該函數內的所有代碼都將在DOM加載完畢後,頁面全部內容(包括圖片等)完全加載完畢前被執行。

jQuery代碼如下:

$(document).ready函數相比其他獲得JavaScript事件並執行相應事件的函數有很多優勢。

該函數不需要在HTML代碼中進行任何「行為」標記,就可以分離JavaScript代碼到每一個獨立的文件中。因此很容易對與內容無關的代碼進行維護。當光標在一個鏈接上懸停時,在瀏覽器的狀態欄中會出現「javascript:void」的信息,該信息就是由於在一個<a>標籤中直接寫入一個事件而產生的。

在一些傳統的頁面中,可能會在<body>標籤裡有onload屬性,該屬性限定只能執行一個函數,並且同時也將「行為」標記引入到了頁面內容中。Jeremy Keith所著的《DOM Scripting》展示了如何創建一個addLoadEvent函數以便將JavaScript分離成單獨的文件,並允許加載多個函數。但是它需要一定數量且複雜的代碼去實現這個功能。同時,用它加載的函數,也是必須要等頁面所有內容被加載完畢後才執行。由於以上種種原因本書選擇了更為先進的$(document).ready函數。

在$(document).ready函數括號中的所有代碼都會提前(只要DOM在瀏覽器中被註冊完畢)被執行,而不是在頁面所有內容(例如圖片等佔用帶寬的內容)加載完畢之後才執行事件。它允許用戶在第一眼看到元素的時候,就能立即看到元素產生的一些隱藏效果、顯示效果和其他效果。

A.2 多個$(document).ready函數

本節介紹$(document).ready函數的另一個功能,即它可以被多次使用。如果不太在意代碼的大小,那麼可以將$(document).ready函數放到所有的JavaScript文件中。無論函數是在一個文件中

還是在多個文件中,它都可以將這些函數歸組。

例如在項目中,每個頁面中都引用了一個公共.js文件,並且每一個.js文件僅僅在首頁中被引用,而且它們都需要調用$(document).ready函數。那麼可以在首頁的<head>標籤中,同時加載3個JavaScript文件,jQuery代碼如下:

然後可以在每一個獨立的.js文件中反覆調用該函數,jQuery代碼如下:

最後需要注意的是,可以使用$(function{…})來代替$(document).ready函數,作為它的縮寫

形式,縮寫方式如下: