前段時間去面試被問及JS的加載(onload)與jQuery中加載(ready)方法的區別,瞬時懵逼了,關於這個知識點平時還真沒怎么注意。
最近先來無事便查了一下資料,
onload 事件(W3c上給出的解釋):
定義和用法
onload 事件會在頁面或圖像加載完成后立即發生。
語法
onload="SomeJavaScriptCode"
支持該事件的 HTML 標簽:
支持該事件的 JavaScript 對象:
image, layer, window
而橘子哥的文章給出這樣的解釋
在JavaScript中
window.onload = function(){
alert(“text1”);
};
等同於在jQuery中
$(window).load(function(){
alert("text1");
});
他們都是用於當頁面的所有元素,包括外部引用文件,圖片等都加載完畢時運行函數內的alert函數。load方法只能執行一次,如果在js文件里寫了多個,只能執行最后一個。(初學者常常在頁面結構里對元素直接寫行為函數,這樣是很丑陋的,可以用選擇器等,在js代碼里對元素進行行為控制。
對於JQuery的 ready()(W3c的解釋):
定義和用法
當 DOM(文檔對象模型) 已經加載,並且頁面(包括圖像)已經完全呈現時,會發生 ready 事件。
由於該事件在文檔就緒后發生,因此把所有其他的 jQuery 事件和函數置於該事件中是非常好的做法。正如上面的例子中那樣。
ready() 函數規定當 ready 事件發生時執行的代碼。
ready() 函數僅能用於當前文檔,因此無需選擇器。
允許使用以下三種語法:
語法 1
$(document).ready(function)
語法 2
$().ready(function)
語法 3
$(function)
提示:ready() 函數不應與 一起使用。
橘子哥解答:
在jQuery中
$(document).ready(function(){
alert("text2");
});
等同於(簡化寫法)
$(function(){
alert("text2");
});
他們都是用於當頁面的標准DOM元素被解析成DOM樹后就執行內部alert函數。這個函數是可以在js文件里多次編寫的,對於多人共同編寫的js就有很大的優勢,因為所有行為函數都會執行到。而且$(document).ready()函數在HTML結構加載完后就可以執行,不需要等大型文件加載或者不存在的連接等耗時工作完成才執行,效率高。
當然 也要根據項目需求來使用,比如有時候有些時候圖片或者重要信息沒出來,會對用戶操作產生誤導,或者需要等獲取某些圖片高寬數據后再執行的行為函數,就得使用window.onload了。
原文:http://blog.csdn.net/lcc921528642/article/details/48379431
那么問題了,有些童鞋說我不知道什么時候用load方法,什么時候用ready方法,那好辦,當你分不清該用什么的時候就都用ready方法。
