欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

探索jQuery的ready方法比原生js的window.onload快的奥秘

程序员文章站 2022-05-25 22:13:33
...

一、ready() :页面DOM结构节点加载完成后触发(数据可能没有完全加载)
// ready的完整写法
$(document).ready(function(){...});
 // 简写方法1
$().ready(function(){...});
 // 简写方法2
$(function(){...});
二、load & onload :页面所有元素(包括图片数据等)加载完成后触发

window.onload = function(){...};
 
<body οnlοad="func1();func1();">...</body>

上面两种一样的,第一个是js写法,一个是嵌入html的写法。只能一次性定义。


$(window).load(function(){...});

jquery提供的load(),比onload方法灵活,可以多次定义并有先后次序。

三、window.onload = function(){…}与 $(function(){…})的对比
window.onload = function(){…} $(function(){…})
一个页面只能写一些onload = function(){…} 一个页面可以同时写多个$(document).ready(function(){…})
DOM节点和数据加载完之后执行代码块 加载完DOM节点即执行
四、测试用例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/jquery-1.12.4.min.js"></script>
    <script>
        alert("hello01");
        window.onload = function(){
            let oDiv = document.getElementById("div01");
            alert("原生弹出的" + oDiv);

        }
        // jQuery的ready完整写法
        $(document).ready(function(){
            let $div = $("#div01");
            alert("jQuery 弹出" + $div);
        })

        $(function(){
            let $div01 = $("#div01");
            alert("简写jQuery" + $div01);
        })
        alert("hello02");
    </script>
</head>
<body>
    <div id="div01">这是一个div元素</div>
</body>
</html>

测试结果:

1、helllo 01
2、hello 02
3、jQuery 弹出[object Object]
4、简写jQuery[object Object]
5、原生弹出的[object HTMLDivElement]