当前位置:首页 > JavaScript

js event实现

2026-04-06 03:40:19JavaScript

事件基础概念

在JavaScript中,事件是用户或浏览器自身执行的某种动作,例如点击按钮、加载页面或按下键盘按键。事件处理程序是响应这些事件的函数。

事件监听方法

使用addEventListener方法可以给DOM元素添加事件监听器。该方法接收三个参数:事件类型、事件处理函数和可选的选项对象。

element.addEventListener('click', function(event) {
  console.log('元素被点击');
});

事件对象

当事件发生时,浏览器会创建一个事件对象,包含与该事件相关的所有信息。通过事件处理函数的参数可以访问这个对象。

element.addEventListener('click', function(event) {
  console.log(event.target); // 触发事件的元素
  console.log(event.type);   // 事件类型
});

事件冒泡与捕获

DOM事件传播分为三个阶段:捕获阶段、目标阶段和冒泡阶段。addEventListener的第三个参数可以控制监听器在哪个阶段触发。

// 捕获阶段触发
parent.addEventListener('click', handler, true);

// 冒泡阶段触发(默认)
child.addEventListener('click', handler, false);

阻止默认行为

某些事件具有默认行为,例如点击链接会跳转页面。使用preventDefault方法可以阻止这些默认行为。

link.addEventListener('click', function(event) {
  event.preventDefault();
  console.log('链接点击被阻止');
});

阻止事件传播

stopPropagation方法可以阻止事件在DOM树中进一步传播,包括冒泡和捕获阶段。

child.addEventListener('click', function(event) {
  event.stopPropagation();
  console.log('事件不会传播到父元素');
});

事件委托

利用事件冒泡机制,可以在父元素上设置事件监听器来处理子元素的事件,这对于动态添加的元素特别有用。

list.addEventListener('click', function(event) {
  if(event.target.tagName === 'LI') {
    console.log('列表项被点击:', event.target.textContent);
  }
});

自定义事件

可以创建和触发自定义事件,用于组件间的通信。

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

// 监听自定义事件
element.addEventListener('build', function(e) {
  console.log('自定义事件触发:', e.detail);
});

// 触发自定义事件
element.dispatchEvent(event);

常见事件类型

  • 鼠标事件:click, dblclick, mousedown, mouseup
  • 键盘事件:keydown, keyup, keypress
  • 表单事件:submit, change, focus, blur
  • 窗口事件:load, resize, scroll
  • 触摸事件:touchstart, touchmove, touchend

移除事件监听

使用removeEventListener可以移除之前添加的事件监听器,需要注意必须传递相同的函数引用。

js event实现

function handler() {
  console.log('事件处理');
}

element.addEventListener('click', handler);
element.removeEventListener('click', handler);

标签: jsevent
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…