告别jQuery:使用原生JavaScript处理DOM加载完成事件

告别jquery:使用原生javascript处理dom加载完成事件

本文详细介绍了如何使用原生JavaScript替代$(document).ready(),以在DOM内容加载完成后执行代码。主要通过DOMContentLoaded事件和window.onload事件进行实现,并提供了具体示例、两者间的差异对比及选择建议,帮助开发者构建无jQuery依赖的现代Web应用。

在Web开发中,我们经常需要在页面的文档对象模型(DOM)完全加载和解析完毕后执行JavaScript代码。jQuery库提供了便捷的$(document).ready()方法来处理这一需求。然而,随着现代JavaScript和浏览器API的不断发展,我们完全可以使用原生JavaScript实现相同的功能,从而减少对外部库的依赖,提升页面性能。本文将深入探讨如何使用原生JavaScript替代$(document).ready()。

理解$(document).ready()的作用

$(document).ready()的作用是在DOM结构完全加载和解析完毕后执行其内部的回调函数。这意味着即使页面中的图片、样式表等外部资源尚未完全加载,脚本也能开始操作DOM。这是为了确保在尝试查找或修改DOM元素时,这些元素已经存在于文档中。

原生JavaScript的替代方案

原生JavaScript提供了两种主要的事件来处理文档加载状态:DOMContentLoaded和window.onload。

1. DOMContentLoaded 事件

DOMContentLoaded事件在初始HTML文档被完全加载和解析后触发,而无需等待样式表、图片和子框架等所有外部资源加载完成。这使得它成为$(document).ready()最直接、最接近的替代方案,通常也是处理DOM操作的首选。

立即学习“Java免费学习笔记(深入)”;

语法:

document.addEventListener('DOMContentLoaded', function() {    // 在DOM完全加载和解析后执行的代码    // 此时可以安全地访问和操作DOM元素});

示例:启用表单提交按钮

假设我们有一个表单,其中包含一系列单选按钮,并且我们希望在用户选择任一单选按钮后启用提交按钮。使用DOMContentLoaded事件可以确保在脚本尝试查找这些按钮时,它们已经存在于DOM中。

原始jQuery代码(示例问题中的代码):

$(document).ready(function(){    if (document.querySelector('input[name="benefitType"]')) {        document.querySelectorAll('input[name="benefitType"]').forEach((elem, i) => {            elem.addEventListener("change", function(event) {                document.querySelector('#benefit-quote-submit').disabled = false;            });        });    }});

使用DOMContentLoaded的原生JavaScript实现:

document.addEventListener('DOMContentLoaded', function() {    // 获取所有名为 "benefitType" 的单选按钮    const benefitTypeInputs = document.querySelectorAll('input[name="benefitType"]');    // 检查是否存在这些单选按钮    if (benefitTypeInputs.length > 0) {        // 遍历每个单选按钮,并添加 'change' 事件监听器        benefitTypeInputs.forEach(elem => {            elem.addEventListener("change", function() {                // 获取提交按钮                const submitButton = document.querySelector('#benefit-quote-submit');                // 如果提交按钮存在,则启用它                if (submitButton) {                    submitButton.disabled = false;                }            });        });    }});

优点:

速度快: 不等待外部资源加载,能更快地执行DOM操作脚本。效率高: 适用于大多数需要操作DOM的场景。

2. window.onload 事件

window.onload事件在整个页面(包括所有依赖资源,如图片、样式表、子框架等)都已完全加载后触发。这意味着它会在DOMContentLoaded事件之后触发。

语法:

window.onload = function() {    // 在所有资源都加载完毕后执行的代码};// 或者使用 addEventListener (推荐,因为可以添加多个监听器)window.addEventListener('load', function() {    // 在所有资源都加载完毕后执行的代码});

示例:启用表单提交按钮(使用window.onload)

虽然对于上述DOM操作的场景,DOMContentLoaded更合适,但为了演示,我们也可以使用window.onload。

window.onload = function() {    const benefitTypeInputs = document.querySelectorAll('input[name="benefitType"]');    if (benefitTypeInputs.length > 0) {        benefitTypeInputs.forEach(elem => {            elem.addEventListener("change", function() {                const submitButton = document.querySelector('#benefit-quote-submit');                if (submitButton) {                    submitButton.disabled = false;                }            });        });    }};

优点:

完整性: 确保所有页面资源都已加载,适用于需要依赖图片尺寸、完整布局等信息的脚本。

缺点:

速度慢: 必须等待所有资源加载,可能导致脚本执行延迟。覆盖性: 直接赋值window.onload = …会覆盖之前设置的任何onload处理器。使用addEventListener则没有此问题。

DOMContentLoaded 与 window.onload 的对比

特性 DOMContentLoaded window.onload

触发时机DOM树构建完成,但外部资源(图片、样式等)可能未加载。整个页面及其所有依赖资源(图片、样式、框架等)全部加载完成。速度通常更快通常更慢用途大多数DOM操作、事件绑定等需要所有资源都加载完成才能进行的任务(如获取图片尺寸、复杂布局计算)等效jQuery最接近 $(document).ready()类似于 $(window).load() (jQuery 3.0+ 已移除)

总结: 对于大多数需要操作DOM的场景,DOMContentLoaded是$(document).ready()的最佳原生替代方案。只有当你的JavaScript代码确实依赖于所有外部资源的完整加载(例如,需要获取图片的确切尺寸,或者等待CSS完全应用后的布局计算)时,才应该考虑使用window.onload。

注意事项

document.readyState的局限性:在问题中提到尝试使用if(document.readyState === ‘ready’ || document.readyState === ‘complete’)。document.readyState属性可以反映文档的加载状态:

loading:文档正在加载。interactive:文档已经完成加载和解析,但外部资源(如图片、样式表)可能仍在加载中(大致对应DOMContentLoaded)。complete:文档和所有子资源都已完全加载(大致对应window.onload)。

直接检查document.readyState的问题在于,如果你的脚本在页面加载的早期就运行,那么它可能在interactive或complete状态之前就已经执行了。因此,简单地一次性检查这个属性可能无法捕获到事件的发生。使用事件监听器(addEventListener)是更可靠和推荐的方式,因为它会在状态改变时通知你,无论脚本何时加载。

脚本位置:将JavaScript代码放置在标签的末尾(在关闭标签之前)可以减少对DOMContentLoaded事件的依赖,因为此时HTML DOM的大部分内容已经解析。但即使如此,使用DOMContentLoaded仍然是最佳实践,因为它能明确地保证DOM的可用性。

兼容性:addEventListener和DOMContentLoaded在所有现代浏览器中都得到了广泛支持,无需担心兼容性问题。

通过掌握DOMContentLoaded和window.onload事件,开发者可以有效地摆脱对jQuery的依赖,用原生JavaScript编写出更轻量、更高效的Web应用。在选择使用哪个事件时,请根据你的具体需求(是否需要等待所有外部资源加载)做出明智的决定。

以上就是告别jQuery:使用原生JavaScript处理DOM加载完成事件的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/63719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月11日 13:53:18
下一篇 2025年11月11日 14:13:40

相关推荐

  • 币安杠杆交易平台入口 币安合约官方登录地址

    币安(binance)是全球知名的数字资产交易服务平台,为用户提供包括现货交易、杠杆交易以及合约交易在内的多种产品和服务。其功能全面,操作流畅,是广大数字资产爱好者进行交易和管理资产的理想选择。本文旨在为新用户提供一份详尽的币安官方app下载、安装及使用指南,并提供官方app的下载链接,您只需点击本…

    2025年12月11日 好文分享
    000
  • 币圈新手防骗指南:2025年必须警惕的五大常见骗局

    随着加密货币市场的持续火热,新手投资者面临的风险与机遇并存。为了保护您的数字资产,识别并规避常见的诈骗手段至关重要。本指南将揭示几种典型骗局,助您安全启航。 正规靠谱的币圈交易所推荐: 欧易OKX: Binance币安: 火币Huobi: Gateio芝麻开门: “高收益”理财与“拉盘”骗局 1、骗…

    2025年12月11日
    000
  • ALEO币是什么?运作机制解析与2025-2030年价格预测

    Aleo是基于零知识证明的隐私公链,通过Zexe模型实现私密交易,默认保护用户数据;采用PoSW共识提升计算效率,并推出Leo语言降低私有应用开发门槛。 欧易okx官网入口: 欧易okxAPP下载链接: 币安binance官网入口: 币安app下载链接: Aleo是一个专注于隐私保护的公链平台,旨在…

    2025年12月11日
    000
  • NEAR协议 (NEAR) 深度分析:分片技术的王者,2025年能否实现大规模应用?

    NEAR协议通过夜影分片实现高效扩容,支持动态再分片与跨分片通信,提升TPS并保障生态一致性;其人类可读账户名、社交恢复等功能降低使用门槛,Rust和TypeScript开发支持吸引Web2开发者;2025年聚焦链抽象与去中心化AI,目标实现多链无缝交互和可信AI应用落地,但需突破杀手级应用缺失与激…

    2025年12月11日
    000
  • 怎么保护虚拟币交易账户?怎么保护虚拟币交易安全教程

    在数字资产日益普及的今天,保障账户安全至关重要。本文为您梳理了一份核心安全策略清单,旨在通过分层防护的理念,帮助您构建坚固的数字资产安全防线,有效规避潜在风险。 在数字资产日益普及的今天,保障账户安全至关重要。本文为您梳理了一份核心安全策略清单,旨在通过分层防护的理念,帮助您构建坚固的数字资产安全防…

    2025年12月11日
    000
  • 火币(HTX)官方最新下载地址 火币交易所2025手机版下载

    火币htx(原huobi)作为全球知名的数字资产服务平台,为广大用户提供安全、可靠的多元化数字资产品类交易服务。其手机版app界面设计友好,功能全面,支持数百种加密货币的实时交易与管理。本文将为您提供火币htx官方最新的app下载地址与详细的安装使用教程,您只需点击文中提供的官方下载链接,即可轻松获…

    2025年12月11日
    000
  • 5分钟学会使用TradingView:币圈交易员必备的图表分析工具

    首先注册并登录TradingView账户,然后加载BTC/USDT等加密货币交易对并选择Binance等数据源,接着添加MACD、RSI等技术指标及画线工具进行分析,之后保存自定义模板以提高效率,最后设置价格提醒并通过浏览器或Telegram接收通知。 binance币安交易所 注册入口: APP下…

    2025年12月11日
    000
  • 加密货币领域的KOL有哪些值得关注?如何获取高质量的行业信息?

    答案:筛选高价值KOL需看其历史记录可验证、逻辑清晰、敢于复盘、多维分析;构建多元信息源应结合研究型、交易型、独立分析师与机构观点;信息验证要交叉比对链上数据、核查持仓、对比共识。 2025主流数字货币交易所: 1、欧易OKX 注册入口: APP下载: 2、Binance币安 注册入口: APP下载…

    2025年12月11日
    000
  • 币圈常见骗局大揭秘:识别并远离这7种最新的诈骗手法

    识别虚假投资平台需查域名认证、SSL证书及用户投诉;警惕高收益承诺,核实团队与白皮书真实性;防范冒充官方人员索要权限;辨别传销式拉人头模式,关注收益来源与推广机制;避开伪造空投,核对官网链接与合约授权;拒绝非合规代币,查看审计与流动性锁定;提防社交群钓鱼,警惕可疑消息与快速操作指令。 主流数字货币交…

    2025年12月11日
    000
  • 加密货币转账卡住了怎么办?如何加速或取消一笔比特币/以太坊交易?

    加密货币转账卡住通常因网络拥堵或手续费过低,可通过检查交易状态、使用钱苞加速、手动替换交易、RBF取消或针对性链策略解决。 主流加密货币交易平台官网入口 1、币安Binance: 2、欧易OKX: 3、火币HTX: 4、大门Gate.io: 主流加密货币交易平台APP下载链接 1、币安Binance…

    2025年12月11日
    000
  • NFT怎么赚钱?从铸造、购买到出售的完整操作指南

    通过NFT赚钱需经历铸造、投资、销售、推广与游戏五步。一、在OpenSea等平台上传作品并设置5%-10%版税完成铸造;二、借助rarity.tools筛选高稀有度NFT,结合Discord社群活跃度判断潜力项目,在Mint或早期市场低价买入;三、通过固定价出售、英式拍卖(起拍价为地板价80%)、荷…

    2025年12月11日
    000
  • 如何使用去中心化交易所(DEX)?它和中心化交易所(CEX)哪个更好?

    去中心化交易所无需注册,用户通过连接Web3钱苞如MetaMask即可交易,资产由个人掌控。首先访问Uniswap等DEX官网,点击“Connect Wallet”并授权钱苞完成连接。随后在“Swap”页面选择代币兑换,输入数量并确认交易,注意滑点与Gas费。用户还可进入“Liquidity”板块提…

    2025年12月11日
    000
  • 如何进行链上数据分析?普通投资者能从链上数据中发现什么机会?

    链上数据分析可帮助投资者发现交易机会与风险。首先通过Etherscan等浏览器查询地址交易记录,识别大额转账与巨鲸行为;其次利用Whale Alert等平台监控百万美元级以上交易流向;再结合交易所净流量、活跃地址数、NUPL等指标判断市场情绪;最后借助Dune Analytics或Nansen等专业…

    2025年12月11日
    000
  • 为什么你在币圈总是亏钱?90%的新手都犯的致命错误

    避免频繁交易、追涨杀跌、跟风投资、忽视风险和情绪化决策是稳定盈利的关键。应设定明确投资周期,采用逆向建仓与技术指标过滤信号,强化项目研究与持仓分析,严格执行风控规则并建立交易日志,通过机械化流程保持决策一致性,提升整体交易纪律与资金安全性。 binance币安交易所 注册入口: APP下载: 欧易O…

    2025年12月11日
    000
  • 最新gate.io登录地址 Gate交易所电脑版官方网站

    最新gate.io登录地址在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate交易所电脑版官方网站,感兴趣的网友一起随小编来瞧瞧吧! Gate交易所官网入口: Gate交易所官方APP下载: 平台访问与下载方式 1、用户可通过主流浏览器直接访问官网网址,进入平台主页面后可查看实时行情与…

    2025年12月11日
    000
  • gate.io官方网站登录链接 芝麻开门交易所PC端

    gate.io官方网站登录链接在哪里?这是不少网友都关注的,接下来由php小编为大家带来芝麻开门交易所pc端登录入口地址,感兴趣的网友一起随小编来瞧瞧吧! gate.io官方网站入口: gate.io官方APP下载: 平台访问与登录步骤 1、在电脑的浏览器中输入官方网址,确保网络连接稳定后,等待页面…

    2025年12月11日
    000
  • 币圈项目白皮书怎么看?快速识别项目优劣的核心要点

    答案是阅读币圈项目白皮书需重点审查团队背景、技术方案、代币经济、路线图进展及外部验证。首先核查核心成员履历真实性与技术经验,确保团队具备执行能力;其次分析技术逻辑与创新性,查看GitHub代码活跃度以确认开发进度;接着评估代币分配是否合理,警惕团队持币过高或解禁周期过短;再对比白皮书路线图与实际产品…

    2025年12月11日
    000
  • 欧易OKX交易平台官方网站地址 OKX欧易安全登录与新用户注册指南

    欧易okx交易平台是全球领先的数字资产交易平台之一,提供现货、合约及理财等多种服务功能。对于新手用户来说,通过官方渠道安全登录官网和下载安装官方app,是进入数字货币市场的第一步。本文将为您详细介绍欧易okx官方网站访问入口、app下载安装以及新用户注册指南。 欧易OKX官网访问入口 ① 打开浏览器…

    2025年12月11日
    000
  • Binance如何下载安装?Binance官方安卓iOS版方法

    本文介绍 binance 应用的下载安装方法。binance 是一家大型的加密货币交易平台,支持买卖与管理多种数字资产。本文提供官方app下载链接,点击本文提供的下载链接即可下载。 官方下载链接 • Binance 官方下载页(含 iOS / Android / 桌面): • Google Play…

    2025年12月11日
    000
  • 币安新手注册指南 币安官网入口+验证教程

    本文旨在为初次接触币安平台的用户提供一份详尽的注册与验证操作指南。通过本教程,您将清晰了解从进入官网到完成身份验证(KYC)的每一个关键步骤,确保账户安全合规,顺利开启您的数字资产之旅。 一、访问币安官网与账户注册 binance币安注册入口: Binance币安APP下载: 1、首先,请务必通过官…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信