冒泡和捕获

95 阅读1分钟

1.事件传播

如果触发子元素的事件和父级的事件相同,那么触发子集事件的时候同时也会触发父级的事件类型

阻止事件传播 e.stopPropagation()

2.目标冒泡捕获

1.冒泡:事件传播时,从里向外;事件传播时,从目标开始传播,一直到父级,body.......window

2.捕获:从外向里 ;从最顶层开始,逐层向下传递,一直到目标

3.事件源.addEventListener('事件类型',事件处理函数,第三个参数为true时传播方式为捕获)

box1.addEventListener('click', function () {
​
  console.log('触发了 box1 的点击事件')
​
}, true)
​
box2.addEventListener('click', function () {
​
  console.log('触发了 box2222 的点击事件')
​
}, true)
​
myBody.addEventListener('click', function () {
​
  console.log('触发了 body 的点击事件')
​
}, true) 
​
​

3.默认阻止事件

方式1:return false

方式2:e.preventDefault()

 // 1. 方式1
            // console.log('点击了 a 标签, 但是因为有 return false 所以默认的跳转功能被拦截')
            // return false
​
            // 2. 通过事件对象拦截      preventDefault()    拦截之后, 取消了 a标签的默认跳转功能
            e.preventDefault()
        }