1. 程式人生 > >Jquery中"$(document).ready(function(){ })"函數的使用詳解

Jquery中"$(document).ready(function(){ })"函數的使用詳解

n) 如果 script 單擊 沒有 當我 com text dom元素

Jquery是優秀的Javascrīpt框架,$是jquery庫的申明,它很不穩定(我就常遇上),換一種穩定的寫法jQuery.noConflict(); jQuery(document).ready(function(){});

使用jQuery的好處是它包裝了各種瀏覽器版本對DOM對象(javascript的DOM對象你應該知道吧,就是它了)的操作.

比如jquery寫法:

1 $("div p"); // (1)
2 $("div.container"); // (2)
3 $("div #msg"); // (3)
4 $("table a",context); // (4)
5 $("#myId"); //
(5)

第一行代碼得到所有<div>標簽下的<p>元素。

第二行代碼得到class 為container的<div>元素,

第三行代碼得到<div>標簽下面id為msg的元素。

第四行代碼得到context為 上下文的table裏面所有的連接元素。

第五行代碼得到id為myid的所有元素

如果你熟悉CSS,你會覺得這些寫法很眼熟!對了。正是。看出奧妙了吧。jquery就是通過這樣的方式來找到Dom對象裏面的元素。跟CSS的選擇器相類似。

現在回答你的具體問題吧

$(document).ready(function(){
alert(
"hello"); });(1)

html

1 <body onload="alert(‘hello‘);">(2)

上面兩段代碼是等價的。但代碼1的好處是做到表現和邏輯分離。並且可以在不同的js文件中做相同的操作,即$(document).ready (fn)可以在一個頁面中重復出現,而不會沖突。基本上Jquery的很多plugin都是利用這個特性,正因為這個特性,多個plugin共同使用起 來,在初始化時不會發生沖突。

如果我們在

$(document).ready(function(){
加入內容A
});

內容A:

$(".btn-slide").click(function
(){ alert("你單擊了a標簽中class等於btn-slide的連接"); });

則表示當我們單擊class=btn-slide的超級連接時彈出“你單擊了a標簽中class等於btn-slide的連接”對話框.

如此方便易用,因此使用jquery是一個不錯的選擇。

$(document).ready()使用小結

window.onload = function(){ alert("welcome"); }

這樣的寫法作用是希望在頁面加載完,自動執行定義js代碼(function)。

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

這個函數是用來取代頁面中的window.onload;

document.ready()和傳統的方法<body onload=”load()”> 相似

不同的是onload()的方法是在頁面加載完成後才發生,這包括DOM元素和其他頁面元素(例如圖片)的加載,因此,使用 document.ready() 方法的執行速度比onload()的方法要快。

Javascript 只有在DOM元素已經定義以後才可以對其執行某種操作,

jQuery使用document.ready來保證所要執行的代碼是在DOM元素被加載完成的情況下執行。比如:

<script type="text/javascript">
$(document).ready(function () {
alert("我的第一個jQuery代碼!");
});
</script>

這段代碼的意思是:當Dom Tree加載完成後,顯示警告信息。

最後要註意兩點:

確保在 <body> 元素的onload事件中沒有註冊函數,否則可能不會觸發$(document).ready()事件。(我嘗試用下面的例子來演示這個情況,但是沒有成功,所以我想這種情況只是可能發生。)

 1 <html>
 2     <head>
 3         <title>
 4             My second jQuery
 5         </title>
 6         <script type="text/javascript" src="/js/jquery.js">
 7         </script>
 8         <script type="text/javascript">
 9             //下面是load的函數含有jquery註冊函數$
10             function load() {
11                 $("p").append("<b>Hello</b>");
12             }
13             //下面是jQuery的代碼
14             $(document).ready(function() {
15                 $("p").append("我的第一個jQuery代碼!");
16                 $("p").append("<b>Hello</b>");
17             });
18         </script>
19     </head>
20     <body onload="load()">
21         <h2>
22             jQuery 簡單例子2
23         </h2>
24         <p>
25             I would like to say:
26         </p>
27     </body>
28 
29 </html>

可以在同一個頁面中無限次地使用$(document).ready()事件。其中註冊的函數會按照(代碼中的)先後順序依次執行。

Jquery中"$(document).ready(function(){ })"函數的使用詳解