Event 事件模块
事件绑定和解绑相关方法,支持事件命名空间和批量操作。
on(element, eventName, fn, options)
给某个元素绑定指定事件。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| element | Element | 是 | 元素节点(支持 window) |
| eventName | String | 是 | 事件名,支持命名空间和批量绑定 |
| fn | Function | 是 | 回调函数 |
| options | Object | 否 | 事件选项 |
事件命名空间
支持使用 . 添加命名空间标识,便于解绑时精准定位:
js
// 单个事件
Qilin.Event.on(el, 'click', handler)
// 带命名空间的事件
Qilin.Event.on(el, 'click.myClick', handler)
// 批量绑定多个事件
Qilin.Event.on(el, 'click,mouseenter', handler)
// 批量绑定带命名空间
Qilin.Event.on(el, 'click.myClick,mouseenter.myHover', handler)示例
js
const handler = (e) => console.log('clicked')
// 基本绑定
Qilin.Event.on(el, 'click', handler)
// 带命名空间
Qilin.Event.on(el, 'click.main', handler)
// 批量绑定
Qilin.Event.on(el, 'click,mouseenter', handler)
// 传递选项
Qilin.Event.on(el, 'click', handler, { once: true })off(element, eventName)
给某个元素解绑指定事件。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| element | Element | 是 | 元素节点(支持 window) |
| eventName | String | 否 | 事件名,不传则解绑全部事件 |
解绑规则
- 不传
eventName:解绑该元素的全部事件 - 只传事件名(如
'click'):解绑该类型的全部事件 - 传带命名空间的事件名:只解绑该命名空间的事件
示例
js
// 解绑全部事件
Qilin.Event.off(el)
// 解绑所有 click 事件
Qilin.Event.off(el, 'click')
// 只解绑 click.main 事件
Qilin.Event.off(el, 'click.main')
// 批量解绑多个事件类型
Qilin.Event.off(el, 'click,mouseenter')完整示例
js
// 绑定带命名空间的事件
Qilin.Event.on(el, 'click.menu', menuHandler)
Qilin.Event.on(el, 'click.dialog', dialogHandler)
Qilin.Event.on(el, 'mouseenter.menu', hoverHandler)
// 只解绑菜单相关事件,保留其他
Qilin.Event.off(el, 'click.menu') // 只解绑 click.menu
Qilin.Event.off(el, '.menu') // ❌ 不支持,需完整事件名
// 解绑所有 click 事件
Qilin.Event.off(el, 'click')
// 解绑全部事件
Qilin.Event.off(el)