如何用JavaScript创建自定义事件?
发布时间 - 2025-12-30 00:00:00 点击率:次JavaScript创建自定义事件需用CustomEvent构造函数实例化并传入事件名和detail数据,再用dispatchEvent触发;监听用addEventListener,支持bubbles和cancelable配置以实现冒泡与取消。
JavaScript 中创建自定义事件很简单,核心是用 CustomEvent 构造函数配合 dispatchEvent 方法触发,再用 addEventListener 监听。
创建并触发一个基础自定义事件
用 CustomEvent 实例化事件对象,传入事件名和可选的配置对象(含 detail 字段携带数据),再调用目标元素的 dispatchEvent 方法:
const event = new CustomEvent('myEvent', { detail: { msg: 'Hello' } });-
document.dispatchEvent(event);或button.dispatchEvent(event);
监听自定义事件
监听方式和原生事件完全一样,用 addEventListener,事件名要和触发时一致:
document.addEventListener('myEvent', (e) => { console.log(e.detail.msg); });- 注意:
e.detail就是你在CustomEvent中传入的数据对象
让事件支持冒泡和取消默认行为
如果需要冒泡(比如子元素触发、父元素捕获),在构造时设置 bubbles: true;需要可取消则加 cancelable: true:
new CustomEvent('save', { bubbles: true, cancelable: true, detail: { data: 'xxx' } })- 监听中可通过
e.prev取消,通过
entDefault()e.cancelable判断是否允许取消
在类或组件中封装自定义事件逻辑
适合用于自定义元素或模块通信。例如在类内部触发事件,外部订阅:
this.dispatchEvent(new CustomEvent('loaded', { detail: this.data }));- 外部:
myComponent.addEventListener('loaded', e => console.log(e.detail)); - 记得确保
this是继承自EventTarget的对象(如HTMLElement子类),否则需手动混入或用new EventTarget()
基本上就这些。不复杂但容易忽略细节,比如漏写 detail 或忘记设置 bubbles 导致监听不到。
# javascript
# java
# html
# ai
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
javascript中闭包概念与用法深入理解
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何实现用户注册和登录?(Auth脚手架指南)
非常酷的网站设计制作软件,酷培ai教育官方网站?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
高端建站如何打造兼具美学与转化的品牌官网?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Laravel怎么判断请求类型_Laravel Request isMethod用法
如何基于PHP生成高效IDC网络公司建站源码?
韩国服务器如何优化跨境访问实现高效连接?
创业网站制作流程,创业网站可靠吗?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
新三国志曹操传主线渭水交兵攻略
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
简单实现jsp分页
文字头像制作网站推荐软件,醒图能自动配文字吗?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
如何用好域名打造高点击率的自主建站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
JavaScript数据类型有哪些_如何准确判断一个变量的类型
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何自定义建站之星模板颜色并下载新样式?
怎么用AI帮你为初创公司进行市场定位分析?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel安装步骤详细教程_Laravel环境搭建指南
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
香港服务器租用费用高吗?如何避免常见误区?
Laravel如何处理CORS跨域请求?(配置示例)
如何构建满足综合性能需求的优质建站方案?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
网站页面设计需要考虑到这些问题
JavaScript如何实现路由_前端路由原理是什么
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
使用C语言编写圣诞表白程序
如何为不同团队 ID 动态生成多个非值班状态按钮
下一篇: 天津网站制作网页,天津都行商城怎么样?
下一篇: 天津网站制作网页,天津都行商城怎么样?


entDefault()