jQuery domready

在jQuery裏面,咱們能夠看到兩種寫法:dom

$(function(){
    //todo
})

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

這兩個方法的效果都是同樣的,都是在dom文檔樹加載完以後執行一個函數(注意,這裏面的文檔樹加載完不表明所有文件加載完)。函數

window.onload是在dom文檔樹加載完和全部文件加載完以後執行一個函數。也就是說$(document).ready要比window.onload先執行。spa

模擬document添加一個ready函數: code

document.ready = function (callback) {
            ///兼容FF,Google
            if (document.addEventListener) {
                document.addEventListener('DOMContentLoaded', function () {
                    document.removeEventListener('DOMContentLoaded', arguments.callee, false);
                    callback();
                }, false)
            }
             //兼容IE
            else if (document.attachEvent) {
                document.attachEvent('onreadytstatechange', function () {
                      if (document.readyState == "complete") {
                                document.detachEvent("onreadystatechange", arguments.callee);
                                callback();
                       }
                })
            }
            else if (document.lastChild == document.body) {
                callback();
            }
        }

document.ready這個函數是實現了。再來驗證一下最上面所說的「ready要比onload先執行」xml

window.onload = function () {
      alert('onload');
};

document.ready(function () {
       alert('ready');
});
相關文章
相關標籤/搜索