ready是文檔準備完成,load是文檔載入完成。簡單點說就是ready在load之前響應(yīng)。
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)提供從項目策劃、軟件開發(fā),軟件安全維護、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務(wù),主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計,app軟件定制開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。成都創(chuàng)新互聯(lián)公司深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
你好,$().ready作用于所有html的dom元素加載完畢之后,尤其是動態(tài)的html,在不確定html文檔是否加載完成的情況下,需要使用,如果不使用,可能會出現(xiàn),dom元素未加載完成,如果直接使用$("div")防止獲取的dom為null,所以建議必須寫上
其二,建議jquery的代碼寫在$().ready中,這是一個jquery的環(huán)境,也就是說在他中的代碼可以被jquery識別,為了防止jquery庫出現(xiàn)錯誤
希望可以幫助到你
ready函數(shù)接受的是一個函數(shù)作為參數(shù).
應(yīng)當寫成
$(document).ready(again)
你寫成
$(document).ready(again())
效果就是先調(diào)用again函數(shù)來執(zhí)行.再把函數(shù)的返回值傳入ready了.
而你寫的again函數(shù)并沒有返回值.所以傳入ready的是undefined
所以你的程序的邏輯就變成了
1.調(diào)且again(), --- 彈出來 "再來一次"
2.document.ready了.開始調(diào)用注冊的兩個回調(diào). 回調(diào)一是彈出 hello World, 回調(diào)二是一個undefined (什么也不會做)
1、window.onload必須等到頁面內(nèi)包括多媒體等所有元素加載完畢后才能執(zhí)行,
$(document).ready()是DOM結(jié)構(gòu)繪制完畢后就執(zhí)行,不必等到多媒體加載完畢,ready()快于onload;
2、window.onload不能同時編寫多個,如果有多個window.onload方法,只會執(zhí)行一個
$(document).ready()可以同時編寫多個,并且都可以得到執(zhí)行
頁面加載完成有兩種事件,一是ready,表示文檔結(jié)構(gòu)已經(jīng)加載完成(不包含圖片等非文字媒體文件),二是onload,指示頁
面包含圖片等文件在內(nèi)的所有元素都加載完成。(可以說:ready
在onload
前加載?。?!)
一般樣式控制的,比如圖片大小控制放在onload
里面加載;
jS事件觸發(fā)的方法,可以在ready
里面加載;
用jQ的人很多人都是這么開始寫腳本的:
通常的寫法
復(fù)制代碼
代碼如下:
$(function(){
//
do
something
});
其實這個就是jq
ready()的簡寫,他等價于:
復(fù)制代碼
代碼如下:
$(document).ready(function(){
//do
something
})
也等于下面這個方法,jQuer的默認參數(shù)是:“document”;
復(fù)制代碼
代碼如下:
$().ready(function(){
//do
something
})
$(document).Ready()方法
VS
OnLoad事件
VS
$(window).load()方法
接觸JQuery一般最先學(xué)到的是何時啟動事件。在曾經(jīng)很長一段時間里,在頁面載入后引發(fā)的事件都被加載
在”Body”的Onload事件里.
對于Body的Onload事件和JQuery的Ready方法相比,有很多弊端.比如:
加載
多個函數(shù)的問題
■body
onload="a();b();"
/body
在Onload事件中
只能這樣加載,很丑陋…
■而在JQuery中你可以利用多個JQuery.Ready()方法,它們會按次序依次執(zhí)行
代碼和內(nèi)容不分離
這個貌似不用說了,讓人深惡痛絕-.-!!?
執(zhí)行先后順序不同
■對于Body.Onload事件,是在加載完所有頁面內(nèi)容才會觸發(fā),我的意思是所有內(nèi)容,包括圖片,flash等.如果頁面的這些內(nèi)容很多會讓用戶等待很
長時間.
■
而對于$(document).ready()方法,這個方法只是在頁面所有的DOM加載完畢后就會觸發(fā),無疑很大的加快了網(wǎng)頁的速度.
但是對于一些特殊應(yīng)用,比如圖片的放大縮小,圖片的剪裁。需要網(wǎng)頁所有的內(nèi)容加載完畢后才執(zhí)行的呢?我推薦使用$(window).load()方法,這
個方法會等到頁面所有內(nèi)容加載完畢后才會觸發(fā),并且同時又沒有OnLoad事件的弊端.
復(fù)制代碼
代碼如下:
script
type="text/javascript"
$(window).load(function()
{
alert("hello");
});
$(window).load(function()
{
alert("hello
again");
});
/script
上面的代碼會在頁面所有內(nèi)容加載完成后按先后順序依次執(zhí)行.
當然不要忘了與之對應(yīng)的Unload方法
復(fù)制代碼
代碼如下:
script
type="text/javascript"
$(window).unload(function()
{
alert("good
bye");
});
/script
上面代碼會在頁面關(guān)閉時引發(fā).
在
所有DOM加載之前引發(fā)JS代碼
這個方法是我在調(diào)試的時候最喜歡的,有時候開發(fā)的時候也用這種方法
復(fù)制代碼
代碼如下:
body
script
type="text/javascript"
(function()
{
alert("hi");
})(jQuery)
/script
/body
對,
就是利用js閉包的形式將js代碼嵌入body,這段代碼會自動執(zhí)行,當然也可以直接嵌入js代碼,這種方式要注意順序問題,如下:
復(fù)制代碼
代碼如下:
body
div
id="test"this
is
the
content/div
script
type="text/javascript"
alert($("#test").html());//I
Can
display
the
content
/script
/body
body
script
type="text/javascript"
alert($("#test").html());//I
Can't
display
the
content
/script
div
id="test"this
is
the
content/div
/body
上面兩段代碼,
第二段代碼當中因為只能解釋到當前代碼之前的DOM,而test并不存在于已經(jīng)解析的DOM數(shù).所以第二段代碼無法正確顯示.