javascript的window.onload()方法和jQuery的$(document).ready()的對比

來源:互聯網
上載者:User

標籤:

jQuery中$(document).ready()的作用類似於傳統JavaScript中的window.onload方法,不過與window.onload方法還是有區別的。

1.執行時間

window.onload必須等到頁面內包括圖片的所有元素載入完畢後才能執行。

$(document).ready()是DOM結構繪製完畢後就執行,不必等到載入完畢。

2.編寫個數不同

window.onload不能同時編寫多個,如果有多個window.onload方法,只會執行一個 ,後面會覆蓋前面的。
$(document).ready()可以同時編寫多個,並且都可以得到執行

3.簡化寫法

window.onload沒有簡化寫法
$(document).ready(function(){})可以簡寫成$(function(){});

window.onload()方法和$(document).ready()的對比
        window.onload         $(document).ready()
執行時機 必須等待網頁中所有的內容載入完畢後 ( 包括圖片 ) 才能執行 網頁中所有 DOM 結構繪製完畢後就執行,可以能 DOM 元素關聯的內容並沒有載入完
編寫個數

不能同時編寫多個

以下代碼無法正確執行:

window.onload = function(){   alert(“text1”); }; window.onload = function(){   alert(“text2”); }; 

結果只輸出第二個,即輸出為:‘test2‘;

 能同時編寫多個

以下代碼正確執行:

$(document).ready(function(){   alert(“Hello World”); }); $(document).ready(function(){   alert(“Hello again”); }); 

結果兩次都輸出 ,先輸出Hello World,再輸出Hello again

簡化寫法        無  
$(document).ready() {//do something };可以簡寫成:$(function(){   // do something }); 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意點1:

由於在 $(document).ready() 方法內註冊的事件,只要 DOM 就緒就會被執行,因此可能此時元素的關聯檔案未下載完。例如與圖片有關的 html 已經下載完畢,並且已經解析為 DOM 樹了,但很有可能圖片還沒有載入完畢,所以例片的高度和寬度這樣的屬性此時不一定有效。要解決這個問題,可以使用 jQuery 中另一個關於頁面載入的方法 ---load() 方法。 load() 方法會在元素的 onload 事件中綁定一個處理函數。如果處理函數綁定給 window 對象,則會在所有內容 ( 包括視窗、架構、對象和映像等 ) 載入完畢後觸發,如果處理函數綁定在元素上,則會在元素的內容載入完畢後觸發。
jQuery 代碼如下:

$(window).load(function (){       // 編寫代碼 });

等價於 JavaScript 中的以下代碼

Window.onload = function (){     // 編寫代碼}

注意點2:

一般用到javascript,我們都是採用jQuery的模式,也就是大多數時候,第一行寫的是:

$(document).ready(function(){    //...});

這個時候,不一定要等所有的js和圖片載入完畢,就可以執行一些方法,不過有些時候,必須要等所有的元素都載入完畢,才可以執行一些方法的時候,比如說,部分圖片或者什麼其他方面還沒有載入好,這個時候,點擊某些按鈕,會導致出現意外的情況,這個時候,就需要用到:

$(window).load(function() {$("#btn-upload").click(function(){   //比如說: uploadPhotos();});});

javascript的window.onload()方法和jQuery的$(document).ready()的對比

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.