冒泡事件和捕获事件

冒泡事件:事件由目标元素往外层触发,至document元素(IE9、Firefox、Chrome和Safari则将事件一直冒泡到window对象)

 

捕获事件:事件由外开始接受事件,至目标元素。IE9、Firefox、Chrome和Safari 从window对象开始捕获)

 

 

目前DOM事件流将2个阶段合并起来。事件触发由捕获阶段开始,冒泡阶段结束,(目标接受到事件这一阶段被归为冒泡阶段)

 

添加监听事件函数addEventListener(监听的事件,监听的事件函数,true为捕获阶段,flase为冒泡阶段(布尔值))

默认添加事件一般是添加到冒泡阶段。

 

!!!addEventListener有一个要注意的点是,想要使用removeEventListener移除监听函数事件的话传入的第二个值不能是匿名函数,如果传入的是匿名函数的话,跟元素之前绑定的匿名函数不是同一个函数

 

如果还不能理解冒泡和捕获,可以自己实践一下。

 

<body>

<div>

<ul>

<li>

<span></span>

</li>

</ul>

</div>

<script>

var ul=document.querySelector("ul")

var li=document.querySelector("li")

var div=document.querySelector("div")

ul.addEventListener("click",function(e){

console.log("ul")

},false)

div.addEventListener("click",function(e){

console.log("div")

},false)

ul.οnclick=function(){

console.log("ul事件触发")

}

ul.addEventListener("click",function(e){

console.log("ul捕获")

},true)

li.addEventListener("click",function(e){

console.log("li捕获")

},true)

li.addEventListener("click",function(e){

console.log("li")

},false)

div.addEventListener("click",function(e){

console.log("div捕获")

},true)

li.οnclick=function(){

console.log("li事件触发")

}

</script>

</body>

 

 

该代码将输出:

这个输出表明了事件触发的顺序。

也证明浏览器大多数事件触发都在冒泡阶段

 

其中有个问题要注意:

就是当同一个元素绑定多个事件时他是按顺序触发的。

也就是我在代码中定义了li元素捕获阶段触发事件还有冒泡阶段触发的事件,哪个事件在前面,谁就会先输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值