博客
关于我
事件冒泡、捕获?如何阻止
阅读量:388 次
发布时间:2019-03-05

本文共 1689 字,大约阅读时间需要 5 分钟。

事件冒泡

    
content
wraper
box

在这里插入图片描述

点击box后触发了wraper,content绑定的点击事件。这种由子元素向祖先元素触发的事件处理模型叫做事件冒泡。

事件冒泡应用:事件委托

利用事件冒泡,和事件源对象(e[非IE事件对象].target或event[IE事件对象].srcElement)进行处理。

事件捕获

事件捕获只需要把监听事件的第三个参数,false改为true。

box.addEventListener('click',function(e){           console.log('box')    },true)    wraper.addEventListener('click',function(e){           console.log('wraper')    },true)    content.addEventListener('click',function(e){           console.log('content')    },true)

在这里插入图片描述

发现控制台打印结果,反了过来,从祖先元素往子元素依次触发事件。IE不存在事件捕获。

事件冒泡和捕获优先级

// 事件捕获    box.addEventListener('click',function(e){           console.log('box捕获')    },true)    wraper.addEventListener('click',function(e){           console.log('wraper捕获')    },true)    content.addEventListener('click',function(e){           console.log('content捕获')    },true)    // 事件冒泡    box.addEventListener('click',function(e){           console.log('box冒泡')    },false)    wraper.addEventListener('click',function(e){           console.log('wraper冒泡')    },false)    content.addEventListener('click',function(e){           console.log('content冒泡')    },false)

在这里插入图片描述

由结果可知,先执行事件捕获,在执行事件冒泡。

阻止事件捕获,冒泡

使用e.stopPropagation()

IE使用event.cancelBubble = true(兼容所有IE) 或 event.stopPropagation() (IE9以下不兼容)

box.addEventListener('click',function(e){           e.stopPropagation()        console.log('box冒泡')    },false)    wraper.addEventListener('click',function(e){           console.log('wraper冒泡')    },false)    content.addEventListener('click',function(e){           console.log('content冒泡')    },false)

在这里插入图片描述

阻止事件捕获和事件冒泡都可以使用这个事件对象的stopPropagation方法阻止。

转载地址:http://nkhwz.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(10)——MySql触发器使用讲解
查看>>
Mysql学习总结(12)——21分钟Mysql入门教程
查看>>
Mysql学习总结(13)——使用JDBC处理MySQL大数据
查看>>
Mysql学习总结(15)——Mysql错误码大全
查看>>
Mysql学习总结(17)——MySQL数据库表设计优化
查看>>
Mysql学习总结(18)——Mysql主从架构的复制原理及配置详解
查看>>
Mysql学习总结(19)——Mysql无法创建外键的原因
查看>>
Mysql学习总结(20)——MySQL数据库优化的最佳实践
查看>>
Mysql学习总结(21)——MySQL数据库常见面试题
查看>>
Mysql学习总结(22)——Mysql数据库中制作千万级测试表
查看>>
Mysql学习总结(23)——MySQL统计函数和分组查询
查看>>
Mysql学习总结(24)——MySQL多表查询合并结果和内连接查询
查看>>
Mysql学习总结(25)——MySQL外连接查询
查看>>
Mysql学习总结(26)——MySQL子查询
查看>>
Mysql学习总结(27)——Mysql数据库字符串函数
查看>>
Mysql学习总结(28)——MySQL建表规范与常见问题
查看>>
Mysql学习总结(2)——Mysql超详细Window安装教程
查看>>
Mysql学习总结(30)——MySQL 索引详解大全
查看>>
Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
查看>>
Mysql学习总结(33)——阿里云centos配置MySQL主从复制
查看>>