当前位置:首页 > 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的第三个参数可以控制监听器在哪个阶段触发。

js event实现

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

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

阻止默认行为

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

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

阻止事件传播

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

js event实现

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可以移除之前添加的事件监听器,需要注意必须传递相同的函数引用。

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

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

标签: jsevent
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…