当前位置:首页 > JavaScript

js监听实现

2026-04-06 17:53:15JavaScript

事件监听基础

在JavaScript中,事件监听通过addEventListener方法实现。该方法接收三个参数:事件类型、回调函数及可选的配置对象。基本语法如下:

element.addEventListener('eventType', callbackFunction, options);

常见的事件类型包括clickmouseoverkeydown等。回调函数会在事件触发时执行,接收一个事件对象作为参数。

事件委托模式

事件委托利用事件冒泡机制,将事件监听器绑定到父元素而非子元素。这种方法适用于动态生成的子元素或大量相似元素:

document.getElementById('parent').addEventListener('click', function(event) {
  if (event.target.matches('.child')) {
    // 处理子元素逻辑
  }
});

自定义事件触发

通过CustomEvent构造函数可以创建和派发自定义事件,实现组件间通信:

const customEvent = new CustomEvent('customEventName', {
  detail: { key: 'value' }
});
element.dispatchEvent(customEvent);

element.addEventListener('customEventName', (e) => {
  console.log(e.detail.key); // 输出 'value'
});

性能优化建议

避免在频繁触发的事件(如scroll)中使用复杂逻辑,可通过防抖(debounce)或节流(throttle)优化:

function debounce(func, delay) {
  let timeoutId;
  return function(...args) {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => func.apply(this, args), delay);
  };
}

window.addEventListener('resize', debounce(() => {
  console.log('窗口大小改变');
}, 200));

移除监听器

使用removeEventListener移除不再需要的事件监听,注意必须传入与添加时相同的函数引用:

function handleClick() { console.log('Clicked'); }
element.addEventListener('click', handleClick);
element.removeEventListener('click', handleClick);

被动事件监听器

对于可能阻塞页面滚动的事件,添加{ passive: true }选项可提升滚动性能:

js监听实现

window.addEventListener('touchstart', () => {}, { passive: true });

标签: js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…