首页 > Web开发 > 详细

js 事件冒泡或事件捕获?

时间:2019-08-14 18:49:03      阅读:97      评论:0      收藏:0      [点我收藏+]

定义

事件传递有两种方式:冒泡  捕获

事件传递定义了元素事件触发的顺序。

如果你将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?

在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件

在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件

 

Part.1  addEventListener() 方法

此方法共个参数,而常用的只是前两个,现在我们重点来看第三个

语法:

        element.addEventListener(event, function, useCapture)

       

       第一个参数是事件的类型 (如 "click" 或 "mousedown")

       第二个参数是事件触发后调用的函数

       第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的

 

Part.2  例子

HTML

<template>
    <div class="home">
        <div id="myDiv">
            <p id="myP">点击段落,我是冒泡。</p>
        </div><br>
        <div id="myDiv2">
            <p id="myP2">点击段落,我是捕获。 </p>
        </div>
    </div>
</template>

JS

<script>
    export default {
        name: "home",
        mounted() {
             document.getElementById(‘myP‘).addEventListener("click", ()=> {
                alert(‘你点击了 P 元素!‘)
             }, false);
            document.getElementById(‘myDiv‘).addEventListener("click", ()=> {
                alert(‘你点击了 DIV 元素!‘)
            }, false);

            document.getElementById(‘myP2‘).addEventListener("click", ()=> {
                alert(‘你点击了 P2 元素!‘)
            }, true);
            document.getElementById(‘myDiv2‘).addEventListener("click", ()=> {
                alert(‘你点击了 DIV2 元素!‘)
            }, true);
        }
    };
</script>

CSS

<style scoped type="text/css">
.home {
    margin-top: 200px;
    padding-left: 800px;
    padding-right: 800px;
}
#myDiv, #myDiv2{
    background-color: coral;
    border: 1px solid;
    padding: 50px;
}
</style>

 

Part.3  Demo 展示

技术分享图片

js 事件冒泡或事件捕获?

原文:https://www.cnblogs.com/langxiyu/p/11353764.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!