欢迎来到Felix的博客

Do the right things! And talk is cheap,show me your code!

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中的常用事件

 

posted @ 2018-10-30 17:06  寂静的天空  阅读(205)  评论(0编辑  收藏  举报
个人感悟: 一个人最好的镜子就是自己,你眼中的你和别人眼中的你,不是一回事。有人夸你,别信;有人骂你,别听。一根稻草,扔街上就是垃圾;捆上白菜就是白菜价;捆上大闸蟹就是大闸蟹的价。 一个人,不狂是没有出息的,但一直狂,肯定是没有出息的。雨打残花风卷流云,剑影刀光闪过后,你满脸冷酷的站在珠峰顶端,傲视苍生无比英武,此时我问你:你怎么下去? 改变自己就是改变自己的心态,该沉的时候沉下去,该浮的时候浮上来;不争名夺利,不投机取巧,不尔虞我诈;少说、多听、多行动。人每所谓穷通寿夭为命所系,岂不知造物之报施,全视人之自取。 座佑铭:每一个不曾起舞的日子,都是对生命的辜负。