为什么Bootstrap 5不再依赖jQuery

浅丽小哥_7885

浅丽小哥_7885

2026-04-11

561人浏览

原创

bootstrap 5 的 javascript 组件不再调用 $ 或 jquery,因其彻底移除 jquery 依赖,全部重写为原生 js 实现;bootstrap.bundle.min.js 仅含 bootstrap 和 popper,与 jquery 无关;旧版 jquery 写法必须全部替换为 new bootstrap.component() 形式。

为什么bootstrap 5不再依赖jquery

Bootstrap 5 的 JavaScript 组件为什么不再调用 $ 或 jQuery

因为 Bootstrap 5 彻底移除了 jQuery 作为运行时依赖,所有组件(如 Modal、Tooltip、Dropdown)都重写为原生 JavaScript 实现。这不是“可选”,而是强制——你引入 bootstrap.bundle.min.js 后,里面已不包含任何 jQuery 兼容层。

常见错误现象:Uncaught ReferenceError: $ is not defined 或 TypeError: $(...).modal is not a function,基本都是误用了旧版写法,或残留了 jQuery 初始化代码。

  • 使用场景:只要你在项目中没手动引入 jQuery,又写了 $('#myModal').modal('show'),就必然报错
  • 参数差异:旧版用字符串命令('show'),新版统一用构造函数 + 实例方法,例如 new bootstrap.Modal(document.getElementById('myModal')).show()
  • 性能影响:移除 jQuery 后,JS 包体积减少约 80 KB(gzip 前),首屏 JS 解析更快;但部分 DOM 操作(如批量事件委托)需自行补足

为什么 bootstrap.bundle.min.js 里还带 Popper?它和 jQuery 有关系吗

没有关系。Popper 是独立的定位引擎,负责 tooltip、dropdown 等组件的自动位置计算;而 jQuery 是通用 DOM 操作库。Bootstrap 4 就已依赖 Popper,5 只是延续这一设计,并借机把 jQuery 一并剔除。

容易踩的坑:有人看到 bundle 文件名带 “bundle”,误以为它“打包了 jQuery”——其实 bootstrap.bundle.min.js = Bootstrap JS + Popper,不含 jQuery;若你额外引入了 jQuery,纯属冗余。

VPS Bootstrap
VPS Bootstrap

从零启动全新 VPS,完成 OpenClaw 完整部署,包括备份/恢复及恢复后验证。用于 OpenClaw 部署。

下载
  • 如果你用的是 bootstrap.min.js(非 bundle 版),则必须单独引入 Popper,否则 tooltip 会定位失败甚至报 ReferenceError: Popper is not defined
  • CDN 引入时务必核对路径,例如 jsDelivr 上正确链接是:https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js,不是 .../js/bootstrap.min.js 后再加 jQuery

旧项目升级到 Bootstrap 5 时,哪些 jQuery 写法必须改

所有以 $ 开头的链式调用都失效。Bootstrap 5 不提供任何 jQuery 插件接口,也不做兼容适配。

典型错误现象:导航栏下拉菜单点不动、tooltip 鼠标悬停无反应、轮播图卡死——大概率是初始化逻辑还卡在 jQuery 语法里,DOM 已加载,但 Bootstrap 的 JS 实例根本没建起来。

  • $(document).ready(...) → 改用 document.addEventListener('DOMContentLoaded', ...)
  • $('.tooltip').tooltip() → 改为遍历节点并逐个初始化:[...document.querySelectorAll('.tooltip')].forEach(el => new bootstrap.Tooltip(el))
  • $('#myAlert').alert('close') → 改为 new bootstrap.Alert(document.getElementById('myAlert')).close()

如果项目里已有 jQuery,Bootstrap 5 还能共存吗

能共存,但不会互相调用。jQuery 不会触发 Bootstrap 组件,Bootstrap 也不会读取 jQuery 对象。二者只是“和平共处”,不是“协同工作”。

真正麻烦的是维护成本:你得同时维护两套 DOM 操作风格,容易混淆;更关键的是,某些插件(比如老版本的 DataTables 或 Select2)仍强依赖 jQuery,它们和 Bootstrap 5 的组件交互时,可能因事件绑定机制不同(jQuery 事件代理 vs 原生 addEventListener)导致监听丢失。

  • 建议策略:新功能一律用原生 Bootstrap API;存量 jQuery 代码逐步迁移,别为了“共存”而保留无用的 <script src="jquery.js"></script>
  • 调试重点:检查浏览器控制台是否出现 Bootstrap's JavaScript requires Popper 类错误——这说明你用了非 bundle 版本,却忘了引入 Popper,和 jQuery 完全无关
实际升级中最容易被忽略的一点:很多开发者只改了 JS 调用方式,却忘了检查 HTML 结构是否符合 Bootstrap 5 规范。比如 .dropdown-menu 必须直接嵌套在 .dropdown 内,否则即使 JS 初始化成功,CSS 层级也会断掉——这种问题和 jQuery 无关,但常被归咎于“升级后不兼容”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

jquery bootstrap

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2583

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5563

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6590

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6238

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

883

5

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

5066

5

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

2023.07.04

1249

3

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

2023.07.04

4984

6

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

980

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
jQuery官方API文档
jQuery官方API文档

共0课时 | 0人学习

jQuery 教程
jQuery 教程

共42课时 | 16.5万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 19.2万人学习