jQuery 基础知识 - $(document).ready()

・$(document).ready() 函数说明

在说明如何使用前,先来看看 ready() 函数的完整代码。

$(document).ready(function() {
  // 需要在HTML加载后,执行的处理
});

上面的代码意味着一旦 HTML=DOM 完成加载后(不包括图像等),function() 函数中的处理(=需要在HTML加载后,执行的处理)将被执行。

如果 jQuery (JavaScript)在 HTML 完全加载之前被执行,某些处理可能会无法正常工作。所以需要使用 ready() 函数等待 HTML 加载完成。

以下三种写法的效果是相同的,都是在HTML加载完成后执行处理。


$(function() {
  // 需要在HTML加载后,执行的处理
});

jQuery(document).ready(function() {
  // 需要在HTML加载后,执行的处理
});

jQuery(function() {
  // 需要在HTML加载后,执行的处理
});

顺便说一句,没有必要像这样写多次ready()函数。


$(document).ready(function(){
  $(".cssName").smoothScroll();
});

$(document).ready(function(){
  $("#idName").slider();
});

$(document).ready(function(){
  $("#navName").nav();
});

您可以像下面这样把它们写在一起,我认为这样的代码管理起来更简单一些。


$(document).ready(function(){
  $(".cssName").smoothScroll();
  $("#idName").slider();
  $("#navName").nav();
});

// 或者

$(function(){
  $(".cssName").smoothScroll();
  $("#idName").slider();
  $("#navName").nav();
});

・与 $(window).load 函数的区别

当页面的所有元素(包括图像)加载完成后,会触发 $(window).load() 函数事件。

・页面中各个事件的执行顺序如下:

1. 页面开始加载

2. HTML 加载完成

3. $(document).ready() 函数执行

4. 包括图像在内的所有内容已完成加载。

5. $(window).load() 函数被执行

$(window).load() 函数最后执行。如果需要加载的页面内容过多,则可能需要花费一些时间。

因此,一般情况下,如果不需要处理图片等的内容时,我认为对用户友好的话,使用 $(document).ready() 函数会更好。

・需要使用 $(window).load() 函数的情况

对于 jQuery 和 JavaScript 在页面没有完全加载时,如果执行某些处理,可能会导致某些处理无法正常执行。

但假设有一个插件需要对图像执行一些处理,并测量图像的宽度和高度后来执行某些处理。如果图像未完全加载,则无法确定宽度和高度,这时如果使用 $(document).ready() 函数来执行该过程,则会出现故障; $(window).load() 函数则会在图像加载完成后执行该处理,则会正常执行。

・ready() 函数的完整示例

我们来看看一个完整的代码示例,来加深理解。

下面的代码也可以在w3schools.com的网上编辑器进行测试。


<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
</head>
<body>

    <p id="readyRun">ready()函数执行前。<p>
    <p id="hideShow">隐藏・显示的展示用段落。</p>

    <button>隐藏・显示上面的段落</button>

    <script type="text/javascript">
        $(document).ready(function () {
            $("button").click(function () {
                $("#hideShow").slideToggle();
            });

            // 页面加载完成后,变更段落里面的内容
            $("#readyRun").text("页面已完成加载,ready()函数已执行成功。");
        });
    </script>
</body>
</html>
  1. jQueryの基本 - $(document).ready
  2. jQuery ready() Method
  3. DOMContentLoaded 事件