Skip to content

DOM 事件

DOM 事件绑定与处理工具函数。


on

添加事件监听器。

已废弃

推荐使用原生 element.addEventListener 替代。

ts
function on(
  element: HTMLElement | Document | Window,
  event: string,
  handler: EventListenerOrEventListenerObject,
  useCapture?: boolean
): void

参数

参数说明类型默认值
element目标元素HTMLElement | Document | Window
event事件名string
handler事件处理函数EventListenerOrEventListenerObject
useCapture是否捕获阶段触发booleanfalse

示例

ts
import { on } from 'ljf-utils'

const btn = document.querySelector('#btn')
on(btn, 'click', (e) => {
  console.log('clicked', e)
})

off

移除事件监听器。

已废弃

推荐使用原生 element.removeEventListener 替代。

ts
function off(
  element: HTMLElement | Document | Window,
  event: string,
  handler: EventListenerOrEventListenerObject,
  useCapture?: boolean
): void

示例

ts
import { off } from 'ljf-utils'

const handler = (e) => console.log('clicked', e)
on(btn, 'click', handler)
// 后续移除
off(btn, 'click', handler)

once

添加一次性事件监听,触发后自动移除。

已废弃

推荐使用 addEventListener{ once: true } 选项替代。

ts
function once(
  el: HTMLElement,
  event: string,
  fn: EventListener
): void

示例

ts
import { once } from 'ljf-utils'

once(btn, 'click', () => {
  console.log('只触发一次')
})

composeEventHandlers

组合多个事件处理函数,按顺序执行。支持 defaultPrevented 检查。

ts
function composeEventHandlers<E>(
  theirsHandler?: (event: E) => boolean | void,
  oursHandler?: (event: E) => void,
  options?: { checkForDefaultPrevented?: boolean }
): (event: E) => void

参数

参数说明类型默认值
theirsHandler先执行的处理函数(event: E) => boolean | void
oursHandler后执行的处理函数(event: E) => void
options.checkForDefaultPrevented是否检查 defaultPreventedbooleantrue

示例

ts
import { composeEventHandlers } from 'ljf-utils'

const handleClick = composeEventHandlers(
  (e) => {
    // 外部处理
    console.log('external handler')
  },
  (e) => {
    // 内部处理
    console.log('internal handler')
  }
)

// 用于组件事件合并
<button onClick={handleClick}>Click me</button>