• jQuery系列(九):JS的事件流的概念


    1、事件概念

    HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件。想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件流”的概念。

    (1)什么是事件流

    事件流描述的是从页面中接收事件的顺序

    a、DOM事件流

    “DOM2级事件”规定的事件流包括三个阶段:

    ① 事件捕获阶段;

    ② 处于目标阶段;

    ③ 事件冒泡阶段

    那么其实呢,js中还有另外一种绑定事件的方式:看下面代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件流</title>
        <script>
            window.onload = function () {
                let oBtn = document.getElementById('btn');
                oBtn.addEventListener('click', function () {
                    console.log('btn处于事件捕获阶段');
                }, true);
                oBtn.addEventListener('click', function () {
                    console.log('btn处于事件冒泡阶段');
                }, false);
                document.addEventListener('click', function () {
                    console.log('document处于事件捕获阶段');
                }, true);
                document.addEventListener('click', function () {
                    console.log('document处于事件冒泡阶段');
                }, false);
                document.documentElement.addEventListener('click', function () {
                    console.log('html处于事件捕获阶段');
                }, true);
                document.documentElement.addEventListener('click', function () {
                    console.log('html处于事件冒泡阶段');
                }, false);
                document.body.addEventListener('click', function () {
                    console.log('body处于事件捕获阶段');
                }, true);
                document.body.addEventListener('click', function () {
                    console.log('body处于事件冒泡阶段');
                }, false);
            };
    
        </script>
    </head>
    <body>
    <a href="javascript:void(0)" id="btn">按钮</a>
    </body>
    </html>

    执行效果:

    解释:事件流首先是经过事件捕获阶段,接着是处于目标阶段,最后是事件冒泡阶段。这里可以画个图示意一下:

     

    首先在事件捕获过程中,document对象首先接收到click事件,然后事件沿着DOM树依次向下,一直传播到事件的实际目标,就是id为btn的a标签。

    接着在事件冒泡过程中,事件开始时由最具体的元素(a标签)接收,然后逐级向上传播到较为不具体的节点(document)。

     2、jQuery中的常用事件

  • 相关阅读:
    项目选题报告答辩总结
    第七次作业--项目需求分析(团队)
    第六次作业--结对编程第二次
    第四次作业——项目选题报告
    eclipse 部署maven 的web 项目提示找不到类的问题
    Spring中的applicationContext.xml与SpringMVC的xxx-servlet.xml的区别
    在eclipse中maven web项目搭建
    eclipse maven plugin 插件 安装 和 配置
    Maven最佳实践:Maven仓库
    eclipse jadclipse 反编译安装说明
  • 原文地址:https://www.cnblogs.com/felixwang2/p/9877941.html
Copyright © 2020-2023  润新知