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

  • 相关阅读:
    Django+nginx+uwsgi静态文件permission denied!
    部署Django项目到Centos6.9服务器
    Django Rest Framework 使用summernote上传图片(二)
    Django Rest Framework 使用summernote上传图片(一)
    基于DRF的企业级流程管理系统
    js获取cookie里保存的中文
    web Worker使js实现‘多线程’?
    css3折叠效果
    移动端适配方案研究
    css before,after伪元素妙用
  • 原文地址:https://www.cnblogs.com/langxiyu/p/11353764.html
Copyright © 2011-2022 走看看