当前位置:首页 > JavaScript

js监听实现

2026-03-15 00:10:29JavaScript

事件监听基础语法

在JavaScript中,使用addEventListener方法监听DOM事件。语法如下:

js监听实现

element.addEventListener(eventName, callbackFunction, [options]);
  • eventName:字符串,表示事件类型(如'click''keydown'
  • callbackFunction:事件触发时执行的回调函数
  • options:可选参数对象,可配置captureonce等特性

常见事件类型示例

// 点击事件
button.addEventListener('click', () => console.log('Button clicked'));

// 键盘事件
input.addEventListener('keydown', (e) => {
  if (e.key === 'Enter') console.log('Enter pressed');
});

// 鼠标移动事件
document.addEventListener('mousemove', (e) => {
  console.log(`Mouse at (${e.clientX}, ${e.clientY})`);
});

事件委托模式

通过事件冒泡机制在父元素监听子元素事件:

js监听实现

ul.addEventListener('click', (e) => {
  if (e.target.tagName === 'LI') {
    console.log('List item clicked:', e.target.textContent);
  }
});

自定义事件触发

创建并派发自定义事件:

// 创建事件
const event = new CustomEvent('build', { detail: { time: Date.now() } });

// 监听事件
elem.addEventListener('build', (e) => {
  console.log('Custom event triggered:', e.detail);
});

// 触发事件
elem.dispatchEvent(event);

性能优化建议

  • 对频繁触发的事件(如scrollresize)使用防抖/节流
  • 不需要时及时移除监听器:removeEventListener
  • 避免在循环中重复添加相同监听器

移除事件监听

必须使用与添加时完全相同的参数引用:

function handleClick() { /* ... */ }

// 添加监听
button.addEventListener('click', handleClick);

// 移除监听
button.removeEventListener('click', handleClick);

标签: js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…