当前位置:首页 > JavaScript

js实现事件

2026-04-05 15:13:24JavaScript

事件绑定基础语法

在JavaScript中,可以通过addEventListener方法为DOM元素绑定事件。语法如下:

element.addEventListener(eventType, handlerFunction, useCapture);
  • eventType: 事件类型字符串,如'click''mouseover'
  • handlerFunction: 事件触发时执行的函数
  • useCapture: 可选布尔值,指定事件捕获阶段触发(默认为冒泡阶段)

常用事件类型示例

// 点击事件
document.getElementById('btn').addEventListener('click', function() {
  console.log('按钮被点击');
});

// 鼠标移入事件
element.addEventListener('mouseenter', () => {
  element.style.backgroundColor = 'yellow';
});

// 键盘事件
document.addEventListener('keydown', (event) => {
  if (event.key === 'Enter') {
    submitForm();
  }
});

事件对象参数

事件处理函数会自动接收事件对象参数,包含事件相关信息:

element.addEventListener('click', (event) => {
  console.log('触发元素:', event.target);
  console.log('鼠标X坐标:', event.clientX);
  event.preventDefault(); // 阻止默认行为
  event.stopPropagation(); // 阻止事件冒泡
});

事件委托实现

通过事件冒泡机制,可以在父元素上统一处理子元素事件:

document.querySelector('ul').addEventListener('click', (event) => {
  if (event.target.tagName === 'LI') {
    console.log('点击的列表项:', event.target.textContent);
  }
});

自定义事件创建与触发

可以创建和派发自定义事件:

// 创建自定义事件
const customEvent = new CustomEvent('myEvent', {
  detail: { message: '自定义数据' },
  bubbles: true
});

// 监听自定义事件
element.addEventListener('myEvent', (e) => {
  console.log(e.detail.message);
});

// 触发事件
element.dispatchEvent(customEvent);

移除事件监听

需要移除事件监听时,必须使用具名函数:

function handleClick() {
  console.log('只执行一次');
  element.removeEventListener('click', handleClick);
}

element.addEventListener('click', handleClick);

事件处理中的this指向

在普通函数中,this指向触发事件的元素;箭头函数中则继承外层上下文:

js实现事件

button.addEventListener('click', function() {
  console.log(this); // 指向button元素
});

button.addEventListener('click', () => {
  console.log(this); // 指向外层上下文(通常是window)
});

标签: 事件js
分享给朋友:

相关文章

vue实现长按事件

vue实现长按事件

实现长按事件的几种方法 在Vue中实现长按事件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生事件监听 通过@mousedown和@mouseup或@touchstart和@touchen…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制

js实现复制

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

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js防抖和节流实现

js防抖和节流实现

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