zoukankan      html  css  js  c++  java
  • js 事件冒泡或事件捕获?

    定义

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

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

    如果你将 <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 展示

  • 相关阅读:
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale
    CodeForces 785B Anton and Classes
    CodeForces 785A Anton and Polyhedrons
    爱奇艺全国高校算法大赛初赛C
    爱奇艺全国高校算法大赛初赛B
    爱奇艺全国高校算法大赛初赛A
    EOJ 3265 七巧板
    EOJ 3256 拼音魔法
    EOJ 3262 黑心啤酒厂
  • 原文地址:https://www.cnblogs.com/langxiyu/p/11353764.html
Copyright © 2011-2022 走看看