$(document).ready()

簡介

$( document ).ready(function() {
    console.log( "ready!" );
});

在網頁文檔加載完畢前一個頁面是無法安全操縱的。jQuery可以爲我們檢測到待發狀態。

$(document).ready()中的代碼在 Document Object Model (DOM) 完畢後會立即執行。

$( window ).on( “load”, function() { … })中的代碼需要在全部頁面(圖片或框架等)完畢後纔會執行,而不僅僅是DOM。

簡寫:

$(function() {
console.log( “ready!” );
});

調用命名函數

function readyFn( jQuery ) {
    // 文檔加載後執行的代碼
}
$( document ).ready( readyFn );
// 或:
$( window ).on( "load", readyFn );

測試
<html>
<head>
    <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script>
    $( document ).ready(function() {
        console.log( "document loaded" );
    });

    $( window ).on( "load", function() {
        console.log( "window loaded" );
    });
    </script>
</head>
<body>
    <iframe src="http://techcrunch.com"></iframe>
</body>
</html>

運行後在控制檯可以看出,在頁面還是空白的時候已經”document loaded”了,等行內框架加載好後,才“window loaded”。
這裏寫圖片描述

優點:

執行時機
使用 $(document).ready(),你能讓你的事件在window加載之前加載或觸發。所有你寫在這個方法裏面的都準備在最早的時刻加載或觸發。也就是說,一旦DOM在瀏覽器中註冊後,$(document).ready()裏的代碼就開始執行。這樣用戶在第一眼看見頁面元素時,特效就可以運行了。

多次執行
window.onload事件每次只能保存對一個函數的引用,他會覆蓋掉之前的函數,所以不能再現有行爲上添加新的行爲。如果引用了多個js文件,每個都需要window.onload方法就導致編碼複雜。

使用$(document).ready()方法能夠很好地解決這種問題,每次調用$document.ready()方法都會在現有行爲上追加新的行爲,這些行爲會根據註冊順序依次執行。

function say(str){
    alert(str)
}
$(document).ready(function(){
    say('hello')
})
$(document).ready(function(){
    say('jQuery')
})
//依次彈出hello jQuery
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章