Bootstrap原生JavaScript怎么调用

夜丽大大_6335

夜丽大大_6335

2026-11-10

998人浏览

原创

Bootstrap 5 彻底移除 jQuery 依赖,JS 插件必须用原生 DOM 操作和 ES6 类(如 bootstrap.Modal)显式初始化,支持 data-bs-* 自动初始化或 ESM 按需导入,但要求 bootstrap.bundle.min.js 加载完成、DOM 就绪、属性前缀正确且元素存在。

bootstrap原生javascript怎么调用

Bootstrap 5 的 JavaScript 插件不再依赖 jQuery,调用方式从 $().modal() 这类链式调用,彻底转向原生 DOM 操作 + ES6 类实例化。如果你在控制台看到 ReferenceError: $ is not defined 或者 modal is not a function,基本可以确定你正处在纯原生 JS 环境下,且没走对初始化路径。

data-bs-* 属性自动初始化(适合静态页面)

这是最轻量、无需写 JS 就能用上模态框、下拉菜单等组件的方式,但只对初始就存在于 DOM 中的元素生效。

  • 必须引入 bootstrap.bundle.min.js(含 Popper),不能只引 bootstrap.min.js
  • 属性前缀必须是 data-bs-,比如 data-bs-toggle="modal",旧的 data-toggle 会静默失效
  • 目标元素 ID 必须匹配 data-bs-target 值,且容器要有 .modal、.dropdown-menu 等对应类名
  • 动态插入的 HTML(如通过 innerHTML 或 fetch 加载)不会被自动扫描,得手动初始化

ES 模块按需导入并 new 实例(推荐用于现代构建项目)

Webpack/Vite 等打包器下,直接 import 组件类比全局 script 更可控,也利于 tree-shaking。

  • 确保已安装 @popperjs/core 和 bootstrap@^5.3.0,低版本可能缺少 bootstrap.esm.js
  • 导入语句要写全:例如 import { Modal, Tooltip } from 'bootstrap';,不是 import bootstrap from 'bootstrap'
  • 构造函数参数必须是真实 DOM 元素,document.getElementById('xxx') 返回 null 时会报错,建议加判断
  • 事件监听需显式绑定:myModal.addEventListener('shown.bs.modal', () => {...}),事件名带 bs. 命名空间

手动调用 Bootstrap 对象方法(兼容旧代码迁移)

如果你沿用 Bootstrap 4 的思路,想保留类似 bootstrap.Modal.getInstance(el) 这种写法,它依然可用,但前提是全局 bootstrap 对象存在。

Java调试
Java调试

通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。 术语注解 JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议) remote JVM:远程 Java 虚拟机 step through code:代码单步调试(步入 / 步过 / 步出调试) inspect variables:变量查看 / 变量检视 stac

下载
  • 引入 bootstrap.bundle.min.js 后,全局会挂载 window.bootstrap,提供 Modal、Dropdown 等类和 getInstance 工具方法
  • bootstrap.Modal.getOrCreateInstance(el, options) 可避免重复初始化,比直接 new Modal(el) 更安全
  • bootstrap.Toast 等组件不支持 data 属性自动触发,必须手动 new 或用 getOrCreateInstance
  • 注意:该对象仅在 script 标签引入模式下存在;ESM 导入后,window.bootstrap 不会出现

常见错误:popover / tooltip 不显示或闪退

这类组件高度依赖 Popper 定位引擎,原生 JS 下出问题大概率不是逻辑错,而是配置或时机问题。

  • 必须确保触发元素存在且已挂载到 DOM,DOMContentLoaded 后再初始化,或用 document.addEventListener('DOMContentLoaded', ...)
  • data-bs-trigger="hover focus" 在触摸设备上可能异常,建议生产环境统一用 click
  • 内容为空(data-bs-content="" 或 title="")会导致初始化失败,控制台可能无提示
  • 若用 new Tooltip(el),el 必须是原生元素,不能是 jQuery 对象或字符串选择器

最易被忽略的一点:Bootstrap 5 的所有 JS 组件都默认启用 CSS 过渡(transition),如果自定义样式里写了 transition: none 或重置了 opacity/transform,动画会卡住甚至功能异常——这不是 JS 错误,但会让调试陷入僵局。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

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

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

下载

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

相关专题

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

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

2023.08.11

2923

5

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

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

2023.10.09

6383

6

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

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

2024.03.19

7270

13

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

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

2024.03.22

7138

10

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

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

2024.05.22

1023

5

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

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

2023.06.20

5746

5

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

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

2023.07.04

1389

3

js四舍五入
js四舍五入

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

2023.07.04

5664

6

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

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

2023.09.01

1040

4

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习