JS 事件流(事件捕获,冒泡)

2019-03-10  本文已影响0人  Gino_Li

现在所有的主流浏览器都是在事件冒泡过程中触发事件的。

mouseover在事件冒泡阶段

//mouseover在事件冒泡阶段
        <div class="web">
            <ul>
                <li>我是第1个li</li>
                <li>我是第2个li</li>
                <li onclick="changeColor(this)">我是第3个li</li>
                <li>我是第4个li
                    <input type="button" value="赞"/>            
                </li>
                <li>
                    我是第5个li
                    <button>赞</button>
                </li>
            </ul>
        </div>

            ali[4].addEventListener('mouseover',function(){
                this.style.background = 'skyblue';
                console.log('我是mouseover事件,父元素');
            })

            btn.addEventListener('mouseover',function(){
                this.style.background = "pink";
                console.log('我是mouseover事件,子元素');
            });
输出结果.jpg

addEventListener()传入第三个参数(true)可让事件再捕获阶段触发

以上面的mouseover为例

            ali[4].addEventListener('mouseover',function(){
                this.style.background = 'skyblue';
                console.log('我是mouseover事件,父元素');
            },true)

            btn.addEventListener('mouseover',function(){
                this.style.background = "pink";
                console.log('我是mouseover事件,子元素');
            });
输出结果.jpg

mouseenter在事件捕获阶段触发

            //mouseenter在事件捕获阶段触发
            ali[3].addEventListener('mouseenter',function(){
                console.log('我是mouseenter事件,父元素');
                
            })
            ali[3].addEventListener('mouseleave',function(){
                console.log('我是mouseleave事件');
            })
            var inp = document.querySelector('input');
            inp.addEventListener('mouseenter',function(){
                console.log('我是mouseenter事件,子元素');
            })
输出结果.jpg

.stopPropagation()阻止事件冒泡

当父子元素都有点击事件时,点击子元素,父元素也会触发点击事件,可通过stopPropagation()阻止事件冒泡,点击子元素时父元素不会出发。

            ali[4].addEventListener('click',function(){
                this.style.fontSize = '30px';
                console.log('我是父元素中的点击事件');
            })
            var btn = document.querySelector('button');
            btn.addEventListener('click',function(e){
                e.stopPropagation();//阻止事件冒泡
                this.style.color='red';
                console.log('我是子元素中的点击事件');
            })
            
上一篇 下一篇

猜你喜欢

热点阅读