Skip to content

Event 事件模块

事件绑定和解绑相关方法,支持事件命名空间和批量操作。

on(element, eventName, fn, options)

给某个元素绑定指定事件。

参数

参数类型必填说明
elementElement元素节点(支持 window)
eventNameString事件名,支持命名空间和批量绑定
fnFunction回调函数
optionsObject事件选项

事件命名空间

支持使用 . 添加命名空间标识,便于解绑时精准定位:

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)

给某个元素解绑指定事件。

参数

参数类型必填说明
elementElement元素节点(支持 window)
eventNameString事件名,不传则解绑全部事件

解绑规则

  • 不传 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)

基于 ISC 许可发布