Skip to content
On this page

事件捕获阶段 处于目标阶段 事件冒泡阶段

TIP

JS代码只能执行捕获或者冒泡其中的一个阶段 onclick 和 attachEvent 只能得到冒泡阶段 addEventListener (type, listener[, useCapture]) 第三个参数如果是true,表示在事件捕获阶段调用事件处理程序;如果是false(不写默认就是false),表示在事件冒泡阶段电泳事件处理程序。 在实际开发中,我们很少使用事件捕获(低版本ie不兼容),我们更关注事件冒泡 有些事件是没有冒泡的,比如onblur、onfocus、onmouseover、onmouseleave

this返回的是绑定事件的DOM元素,e.target返回的是触发事件的对象

事件代理和事件委托

冒泡阶段 this是可以变化的,但event.target不会变化

target 属性指向的是事件目标,而 currentTarget 属性指向的是正在处理当前事件的对象,它总是指向事件绑定的元素。而 target 指向的可能不是定义时的事件目标。

html
    <div id="HUAIGU">
        <div>
            dom1
        </div>
        <div>
            dom2
        </div>

    </div>
    <script>
        var HUAIGU= document.getElementById("EEE")
        HUAIGU.addEventListener("click",(e)=>{
            console.log(e.target,e.currentTarget)
            // dom1  HUAIGU
        })
    </script>

stopPropagation() 阻止事件冒泡,设置之后,点击该元素时父元素绑定的事件就不会再触发; preventDefault() 阻止默认事件发生; stopImmediatePropagation() 用来阻止监听同一事件的其他事件监听器被调用以及阻止事件冒泡