• JS之事件机制


    一、绑定事件的3种方式

         1、内联绑定事件

         2、on+事件名,绑定事件程序

         3、通过addEventListener/removeEventListener绑定事件

              不支持ie9之前的浏览器,ie9之前浏览器可以通过attachEvent/detachEvent绑定事件

              这两种处理事件的方法有两个区别:

              1、获取事件对象不同:attachEvent需要通过window对象来调用事件对象

              2、获取节点不同:attachEvent事件中需要通过读取srcElement来获取,addEventListener通过target

              3、处理阻止冒泡和阻止默认事件不同:阻止冒泡一个通过事件对象调用stopPropagation方法,一个通过设置事件对象的cancleBubble为true;

                                                                   阻止默认行为一个通过事件对象调用preventDefault方法,一个通过设置事件对象的returnValue为false。

            

    二、事件处理的流程

          事件处理程序绑定的事件只要冒泡阶段。

          addEventListener绑定的事件有捕获和冒泡两个阶段

          捕获阶段:事件触发从window到目标对象

          冒泡阶段:事件触发从目标对象到window传播

         addEventListener这个方法的第三个参数默认为false,触发事件时先捕获再冒泡,如果设置这个参数为true则没有冒泡阶段。

         addEventListener可以给一个元素同时绑定多个事件,如果同时注册冒泡和捕获事件,则按注册顺序执行。

    三、事件代理

        事件代理就是利用事件冒泡的原理,通过在父元素上绑定事件,来代替在每个子元素上绑定事件,节省了大量重复的事件监听。

    参考资料:

    文档对象模型事件:https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event

    前端工程师手册:https://leohxj.gitbooks.io/front-end-database/javascript-basic/events.html

    https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Building_blocks/Events

  • 相关阅读:
    LeetCode100——same tree
    Stl——Vector.erase()用法
    xor异或逻辑运算
    爬楼梯问题——迭代or递归
    简单博弈论取石子
    纪念我的leetcode开门之旅
    JiuDuOj——1049
    [Codeforces 872]比赛记录
    [BZOJ 4563]放棋子
    10.14
  • 原文地址:https://www.cnblogs.com/yy95/p/9970530.html
Copyright © 2020-2023  润新知