$(document).ready()

本文详细介绍了jQuery中$(document).ready()与$(window).on('load')的区别及应用。通过实例演示了这两种方法如何控制页面加载时机,确保用户体验的同时避免加载顺序混乱带来的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

$( 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
<think>我们正在讨论的是jQuery$(document).ready()方法的使用。用户之前的问题涉及到BootstrapTable的配置,但当前问题聚焦于$(document).ready()。根据引用,特别是引用[1][2][3][5],我们得知:1.$(document).ready()jQuery提供的,需要引入jQuery库。2.它的作用是当DOM(文档对象模型)加载完成后就执行,而不需要等待图片等其他资源加载完成。3.与window.onload的区别在于:window.onload是等待整个页面(包括图片等)加载完成才执行,而$(document).ready()只需要DOM结构加载完成即可。用户可能的需求:如何在代码中正确使用$(document).ready(),尤其是在配置BootstrapTable等需要操作DOM的场景。因此,我们给出以下回答:###一、基本概念`$(document).ready()`是jQuery中用于在DOM(文档对象模型)完成加载后立即执行指定函数的机制。它比JavaScript原生的`window.onload`事件触发更早(不需要等待图片等资源加载)[^5]。###二、使用语法1.**标准形式**```javascript$(document).ready(function(){//此处编写DOM操作代码//例如:初始化表格});```2.**简化形式**(推荐)```javascript$(function(){//等同于$(document).ready()//例如:$('#table').bootstrapTable({...});});```###三、示例场景(结合用户之前的BootstrapTable配置)假设需要在DOM加载完成后初始化一个BootstrapTable:```javascript//引入jQuery和BootstrapTable相关库后$(function(){$('#myTable').bootstrapTable({columns:[{title:'ID',field:'id',visible:true},{title:'名称',field:'name'}],data:[{id:1,name:'Item1'},{id:2,name:'Item2'}]});});```>关键提示:此代码必须放在DOM中`<tableid="myTable">`元素之后(或放在页面底部),或者确保在`$(document).ready()`内执行,因为此时DOM元素已经加载完成[^2]。###四、与window.onload对比|特性|$(document).ready()|window.onload||-------------------|------------------------------------|-----------------------------------||**执行时机**|DOM树构建完成即执行|整个页面包括图片等资源加载完成||**多次使用**|可以定义多个,均执行|后一个会覆盖前一个||**兼容性**|依赖jQuery|标准JavaScript|###五、最佳实践1.**引入位置**:将`<script>`标签放在`</body>`结束前,或使用`$(document).ready()`确保DOM就绪。2.**避免阻塞**:不要在`$(document).ready()`中执行耗时操作,以免阻塞页面渲染。3.**模块化**:如果使用模块化开发(如Webpack),结合`import`使用。§§相关问题§§1.如何在jQuery中处理多个$(document).ready()块?2.如果不使用jQuery,如何实现类似DOM就绪的效果?3.为什么说在$(document).ready()中使用AJAX加载数据是安全的?</think> ### jQuery 的 `$(document).ready()` 使用方法详解 `$(document).ready()` 是 jQuery 的核心函数之一,用于在**DOM 加载完成后立即执行代码**(无需等待图片等资源加载)。它比 JavaScript 原生的 `window.onload` 触发更早,能显著提升页面响应速度[^5]。 --- #### 一、基础用法 ##### 1. 标准格式 ```javascript $(document).ready(function() { // DOM 加载完成后执行的代码 console.log("DOM 已就绪!"); $("#myButton").click(function() { alert("按钮被点击!"); }); }); ``` ##### 2. 简化语法(推荐) ```javascript $(function() { // 功能同上,更简洁 $("#myTable").bootstrapTable({...}); // 初始化表格 }); ``` --- #### 二、结合 Bootstrap Table 的实用示例 假设需要初始化表格并隐藏特定列(参考用户问题): ```javascript $(function() { $('#dataTable').bootstrapTable({ columns: [ { title: 'ID', field: 'Id', visible: false // 初始隐藏列 }, { title: '用户名', field: 'username' } ], data: loadDataFromServer() // 从服务器加载数据 }); // 动态隐藏"电话"列 $('#hidePhoneBtn').click(function() { $('#dataTable').bootstrapTable('hideColumn', 'phone'); }); }); ``` > **关键说明**: > - 使用 `$(function(){...})` 确保表格初始化时 DOM 已就绪[^2] > - 通过 `visible: false` 直接配置初始隐藏列 > - 按钮事件绑定在 DOM 就绪后执行,避免找不到元素 --- #### 三、与 `window.onload` 的核心区别 | 特性 | `$(document).ready()` | `window.onload` | |--------------------|-----------------------------|--------------------------| | **触发时机** | DOM 解析完成立即触发 | 所有资源(如图片)加载完成 | | **执行速度** | ⚡️ 更快 | ⏳ 较慢 | | **多次调用** | ✅ 可定义多个,均会执行 | ❌ 后定义的覆盖先定义 | | **依赖关系** | 需引入 jQuery 库[^1] | 原生 JavaScript 支持 | > **典型场景**: > - 表格初始化、事件绑定 → 用 `$(document).ready()`[^5] > - 图片尺寸计算 → 用 `window.onload` --- #### 四、最佳实践 1. **防止 JS 阻塞渲染** ```html <!-- 将脚本放在 body 末尾 --> <body> <table id="myTable"></table> <script> $(function() { /* 初始化代码 */ }); </script> </body> ``` 2. **模块化组织代码** ```javascript $(function() { initTable(); // 初始化表格 bindEvents(); // 绑定事件 }); function initTable() { $('#myTable').bootstrapTable({...}); } ``` 3. **异步加载优化** ```javascript $(function() { $.get('/api/data').done(function(data) { $('#table').bootstrapTable({ data: data }); }); }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值