JS和HTML之間的交互是通過用戶和瀏覽器操作頁面時引發的事件來處理的。當文檔或者它的某些元素發生某些變化時,瀏覽器會自動生成一個事件。例如當瀏覽器裝載完一個文檔后一點資訊 圖片加載失敗,會生成事件;當用戶單擊某個按鈕時,也會生出事件。雖然利用傳統的JS事件能完成這些交互,但Q增加并擴展了基本的事件處理機制Q不僅提供了更加雅的事件處理語法而且極大地增強了事件處理能力。的相關資訊可以到我們網站了解一下,從專業角度出發為您解答相關問題,給您優質的服務!
DOM加載
以瀏覽器裝載文檔為例,在頁面加載完畢后,瀏覽器會通過S為DOM元素添加事件。在常規的JS代碼中,通常使用 方法,而在Q中,使用的事$()。()方法。$()。()方法是事件模塊中比較重要的一個函數,可以極大地提高WEB應用程序的響應速度。Q就是用$()。()方法來代替傳統JS的$()。()方法的。通過使用該方法,可以在DOM載入就緒時就對其進行操縱并調用執行它所綁定的函數。在使用過程中一點資訊 圖片加載失敗,需要注意$()。()方法和 方法之間的細微區別。
執行時機
$()。()方法和 方法有相似的功能,但是在執行時機方面是有區別的。 方法是在頁中所有的元素(包括元素的所有關聯文件)完全加載到瀏覽器后才執行,即JS此時才可以訪問頁中的任何元素。而通過Q中的$()。()方法注冊的時間處理程序, 在DOM完全就緒時就可以被調用。此時,頁的所有元素對Q而言都是可以訪問的,但是,這并不意味著這些元素關聯的文件都已經下載完畢。
舉一個例子,偶一個大型的圖庫,為頁中所有圖片添加某些行為,例如單擊圖片后讓它隱藏或顯示。如果使用 方法來處理,那么用戶必須等到每一幅圖片都加載完畢后,才可以進行操作。如果使用Q中的$()。()方法來進行設置,只要DOM就緒就可以操作了,不需要等待所有圖片下載完畢很顯然,把頁解析為DOM樹的速度比把頁面中的所有關聯文件加載完畢的速度很多。
另外,需要注意一點,由于在$()。()方法內注冊的事件,只要DOM就緒就會被執行,因此可能此時元素的關聯文件未下載完。例如與圖片有關的HTML下載完畢,并且已經解析為DOM樹了,但很有可能圖片還未加載完畢,所以例如圖片的高度和寬度這樣的屬性此時不一定有效。要解決這個問題,可以使用Q中另一個關于頁面加載的方法----()方法。()方法會在元素的事件中綁定一個處理函數。如果處理函數綁定給對象,則會在所有內容(包括窗口、框架、對象和圖像等)加載完畢后出發,如果處理函數綁定在元素上,則會在元素的內容加載完畢后出發。Q代碼如下:
$()。{(){
編寫代碼
}}
等價于JS中的一下代碼:
W=(){
編寫代碼
}
多次使用
我們曾經總結過方法和$()。()的區別,現在進行詳細講解。
假設頁總有兩個函數,JS代碼如下:
F () {
A();
}
F (){
A();
}
當頁加載完畢后,通過如下JS代碼來分別調用函數和函數:
=;
=;
R然而當運行代碼后,發現只彈出字符串對話框。
字符串對話框不能被彈出的原因是JS的事件一次只能保存對一個函數的引用,它會自動用后面的函數覆蓋前面的函數,因此不能在現有的行為上添加新的行為。
為了達到兩個函數順序出發的效果,只能再創建一個新的JS方法來現,JS代碼如下:
=(){
();
();
}
雖然這樣編寫代碼能解決某些問題,但還是不能滿足某些需求,例如有多個JS文件,每個文件都需要用到 方法,這種情況下用上面提到的編寫代碼會非常麻煩。而Q的$()。()方法能夠很好地處理這些情況,每次調用$()。()方法都會在現有的行為上追加新的行為,這些行為函數會根據注冊的順序依次執行。