当前位置:首页 > JavaScript

js实现event

2026-02-02 04:17:11JavaScript

事件监听与触发

在JavaScript中实现事件处理通常涉及事件监听和事件触发。可以通过addEventListener方法监听DOM元素的事件,或自定义事件通过Event构造函数和dispatchEvent方法触发。

// 监听点击事件
document.getElementById('button').addEventListener('click', function(event) {
    console.log('Button clicked');
});

// 自定义事件触发
const customEvent = new Event('customEvent');
document.dispatchEvent(customEvent);

自定义事件对象

通过CustomEvent构造函数可以创建带数据的自定义事件,传递额外信息给事件监听器。

const event = new CustomEvent('build', { detail: { time: new Date() } });

document.addEventListener('build', function(e) {
    console.log('Event triggered at:', e.detail.time);
});

document.dispatchEvent(event);

事件委托

事件委托利用事件冒泡机制,在父元素上监听子元素的事件,适用于动态添加的元素或大量子元素。

document.getElementById('parent').addEventListener('click', function(event) {
    if (event.target.matches('button.child')) {
        console.log('Child button clicked');
    }
});

移除事件监听

使用removeEventListener移除已注册的事件监听器,需确保回调函数是同一引用。

function handleClick() {
    console.log('Clicked once');
    document.removeEventListener('click', handleClick);
}

document.addEventListener('click', handleClick);

事件冒泡与捕获

事件传播分为捕获阶段和冒泡阶段,可通过addEventListener的第三个参数控制监听阶段。

// 捕获阶段触发
document.getElementById('outer').addEventListener('click', function() {
    console.log('Outer captured');
}, true);

// 冒泡阶段触发(默认)
document.getElementById('inner').addEventListener('click', function() {
    console.log('Inner bubbled');
});

阻止默认行为与冒泡

调用event.preventDefault()阻止默认行为(如表单提交),event.stopPropagation()阻止事件冒泡。

js实现event

document.getElementById('link').addEventListener('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
    console.log('Link click handled without navigation');
});

标签: jsevent
分享给朋友:

相关文章

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现vue弹窗

js实现vue弹窗

实现 Vue 弹窗的基本方法 使用 Vue.js 实现弹窗功能可以通过组件化方式完成。以下是一个简单的弹窗实现示例,包含显示/隐藏控制、内容插槽和基础样式。 弹窗组件代码 创建 Modal.vue…

js实现vue模板

js实现vue模板

使用纯 JavaScript 实现 Vue 模板功能 要实现类似 Vue 的模板功能,可以通过以下步骤完成: 1. 数据绑定与响应式更新 通过 Object.defineProperty 或 Pr…

vue.js实现改

vue.js实现改

Vue.js 实现修改功能 在 Vue.js 中实现修改功能通常涉及以下几个关键步骤: 数据绑定与表单处理 使用 v-model 实现表单数据与 Vue 实例数据的双向绑定。例如修改用户信息时,表单…

vue js实现轮播图

vue js实现轮播图

Vue.js 实现轮播图的方法 使用原生 Vue.js 实现 创建 Vue 组件 Carousel.vue,利用 v-for 和 v-bind:class 动态控制轮播项显示: <templa…

react.js如何打包发布

react.js如何打包发布

安装依赖 确保项目已安装必要的依赖包,包括 react、react-dom 和构建工具(如 webpack 或 vite)。若使用 webpack,需安装 webpack、webpack-cli 及相…