在Jquery裏面,咱們能夠看到兩種寫法:$(function(){}) 和$(document).ready(function(){})javascript
這兩個方法的效果都是同樣的,都是在dom文檔樹加載完以後執行一個函數(注意,這裏面的文檔樹加載完不表明所有文件加載完)。html
而window.onload是在dom文檔樹加載完和全部文件加載完以後執行一個函數。也就是說$(document).ready要比window.onload先執行。java
那麼Jquery裏面$(document).ready函數的內部是怎麼實現的呢?下面咱們就來看看:jquery
咱們來爲document添加一個ready函數:數組
下面給出jQuery ready與window.onload的區別dom
window.load
|
$(document).ready()
|
|
執行時機
|
必須等待網頁中全部的內容加載完畢後(包括圖片)才能執行
|
網頁中全部DOM結構繪製完畢後就執行,能夠能DOM元素關聯的內容並無加載完
|
編寫個數
|
不能同時編寫多個
如下代碼沒法正確執行:
window.onload = function(){
alert("caibaojian");
};
window.onload = function(){
alert("caibaojian.com");
};
結果只輸出第二個
|
能同時編寫多個
如下代碼正確執行:
$(document).ready(function(){
alert("Hello Caibaojian");
});
$(document).ready(function(){
alert("Hello caibaojian.com");
});
結果兩次都輸出
|
簡化寫法
|
無
|
$(function(){
// do something
});
|
<script type=「text/javascript」 src=「xxx//jquery-x.y.z.js">
引入jQuery.存在兩個版本,jquery-x.y.z.min.js是精簡壓縮版,不帶min的是開發版,代碼中的註釋和縮進等都被保留了.函數
<html>
<head>
<title>Hello jQuery</title>
<script type="text/javascript" src="libs//jquery-1.11.2.js"></script>
<script type="text/javascript">
$(document).ready(function () { alert("Hello World"); }); </script> </head> <body> </body> </html>
window.onload = sayHello;
window.onload = sayWorld; function sayHello() { alert("Hello"); } function sayWorld() { alert("World"); }
$(document).ready(sayHello);
$(document).ready(sayWorld);
function sayHello() { alert("Hello"); } function sayWorld() { alert("World"); }
<body> <a href="#">test1</a><br> <a href="#">test2</a><br> <a href="#">test3</a><br> <a href="#">test4</a> </body>
window.onload = function () { var myLinks = document.getElementsByTagName("a"); for(var i = 0; i < myLinks.length; ++i){ myLinks[i].onclick = function(){ alert("Hello link: " + i); } } }
$(document).ready(function () { $("a").click(function () { alert("Hello link from jQuery!"); }); });
<p id="clickMe">Click Me!</p>
//Part 1: DOM --> jQuery //DOM object: var pElement = document.getElementsByTagName("p")[0]; alert("DOM pElement: " + pElement.innerHTML); //Convert DOM object to jQuery object: var pElementjQuery = $(pElement); alert("jQuery pElementjQuery: " + pElementjQuery.html());
//Part 2: jQuery --> DOM //jQuery object array: var clickMejQuery = $("#clickMe"); //Convert jQuery object to DOM object (2 ways): //way 1: var domClickMe1 = clickMejQuery[0]; alert("dom1: " + domClickMe1.innerHTML); //way 2: var domClickMe2 = clickMejQuery.get(0); alert("dom2: " + domClickMe2.innerHTML);