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 展示

  • 相关阅读:
    动态规划算法1——背包问题
    图论——Dijkstra算法
    C++的输入和输出
    org.hibernate.type.SerializationException: could not deserialize 反序列化失败
    当json串传输异常(乱码破坏格式),服务器不能解析时,可以截取串达到取值的目的
    ReferenceError: ** is not defined
    jar包反复下载不成功
    include与.jspf
    url中“/”的意义
    JSP取得绝对路径
  • 原文地址:https://www.cnblogs.com/langxiyu/p/11353764.html
Copyright © 2011-2022 走看看