分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

js的事件冒泡和事件捕获

发布时间:2023-09-06 01:21责任编辑:苏小强关键词:js冒泡

一、定义

事件捕获:从document到触发事件的那个节点,自上而下触发事件;

事件冒泡:从触发事件节点依次向上触发事件,直到document。

原声js中,绑定事件方法addEventListener(eventName,function,bool)的第三个参数控制事件触发顺序。true为捕获,false为冒泡,默认冒泡。

event.stopPropagation()会阻止事件流的传播。

二、实例

html结构:

<div id=‘parent‘> ???????<div id=‘child‘> ???????</div> </div>

给div绑定事件:

1.冒泡过程

parent.addEventListener(‘click‘, function(){ ???console.log(‘parent‘);},false);child.addEventListener(‘click‘, function(){ ???console.log(‘child‘);},false);body.addEventListener(‘click‘, function(){ ???console.log(‘body‘);},false);

结果如下:

2.捕获过程

parent.addEventListener(‘click‘, function(){ ???console.log(‘parent‘);},true);child.addEventListener(‘click‘, function(){ ???console.log(‘child‘);},true);body.addEventListener(‘click‘, function(){ ???console.log(‘body‘);},true);

结果如下:

三、应用

1.事件委托:利用事件冒泡处理动态元素事件绑定的方法。

<div id=‘parent‘> ???????<div class=‘child‘></div> ???????<div class=‘child‘></div> ???????<div class=‘child‘></div> ???</div>

如果要给class为child的div绑定动态事件,使用冒泡则效率最高:

parent.addEventListener(‘mousemove‘, function(event){ ???????var tDiv =event.target; ???????if ($(tDiv).hasClass(‘child‘)) { ??????????$(tDiv).css(‘background‘, ‘red‘).siblings().css(‘background‘, ‘green‘); ???????} ????????????return false; ??????},false);

2.结合stopPropagation和冒泡、捕获可以阻止某个元素上的特定事件

js的事件冒泡和事件捕获

原文地址:http://www.cnblogs.com/lodadssd/p/7764567.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved