zoukankan      html  css  js  c++  java
  • 浅谈js事件监听

    浅谈js事件监听

    1、在谈事件监听之前,先来了解一下什么是js事件?

    大家都知道js是一种动态数据类型的语言, 可以使我们在原有的静态页面上实现一些动态的效果;当网页中的某个元素产生可以触发js代码(函数)实现js动态效果的行为,我理解为js事件。

    2、事件的组成部分:事件源 . 事件类型 = 预处理函数

    事件源:真正触发事件的那个元素;

    事件类型 : 例:onmousemove 、onmouseover等;

    预处理函数:function ( ){ };

    3、事件监听:

    事件分为DOM 0级事件和Dom 2级事件,DOM2级事件也叫做事件监听。DOM 0级事件的缺点是如果事件相同, 后者的事件会覆盖前者的事件,DOM2级事件可以为同一个对象的同一个事件绑定多个事件处理程序,且前者事件不会被覆盖。

    DOM2级事件的方法是:

            addEventListener() 

                参数1:事件类型  不需要加on   

               参数2:回调函数    

                参数3:布尔值  true代表捕获   false代表冒泡

               解绑事件方法:removeEventListener()    

        但是IE不支持此方法

        IE浏览器下用:attachEvent()

               参数1:事件类型  需要加on

               参数2:回调函数

    解绑事件方法:detachEvent()

    4、事件流、事件冒泡、事件捕获

    事件流:  当一个HTML元素产生一个事件时,该事件会在元素节点与根节点之间的路径传播,路径所经过的节点都会收到该事件,这个传播的过程叫做DOM事件流。 

    简单说:元素触发事件时,事件的传播过程称为事件流,过程分为捕获和冒泡。

    冒泡事件:由微软提出的,事件由子元素传递到父元素的过程,叫做事件冒泡;

    捕获事件:网景提出的   事件由父元素到子元素传递的过程,叫做事件捕获;

    5、浏览器事件默认执行并传播的顺序

         冒泡过程:目标元素 ——>......... ——>body ——>html ——>document;

               例:

               html结构及css样式

              

               Js代码:

              

         捕获过程 : document——>html——>body......... ——>目标元素;

                 例:html结构及css样式还是引用上面的

                   

          当冒泡事件和捕获事件同时发生时,先执行事件捕获,到最底层的时候顺序执行(常见面试题)

               例:

               

               document---捕获     body----捕获   big----捕获    small--冒泡     small----捕获    big---冒泡    body----冒泡    document---冒泡

               事件冒泡的好处:可以利用事件冒泡的原理,将子级的事件委托给父级元素监听,减少事件的绑定

    6、事件代理(事件委托)

         利用冒泡机制,将子元素的事件委托给父元素去监听(给父元素添加事件),当子元素触发事件时,事件冒泡到父级;如果希望指定的子元素才能触发事件,可以通过事件对象(event)获得事件源(target),然后通过条件判断是不是期望的子元素,如果是的话,执行事件,否则不执行

          获取事件源的方法: var target = e.target||e.srcElement

          事件代理的好处:

    1、实现对未来元素事件的绑定

    2、减少事件绑定,提高性能

     

          例:

                html结构:

                         

                Css样式:

                        

                Jss代码:

                       

              上述例子中,将子级aLi的事件onclick委托给父元素oList进行监听,通过事件对象获取到事件源onclick,当子元素aLi触发时,就会执行相应的代码;

    当再克隆添加一个新的li元素时,也会对这个新元素进行事件绑定,无需再重新对其进行事件绑定。

     

     

     

     
  • 相关阅读:
    airflow 安装问题
    ACM-单词接龙
    ACM-AK吧!少年
    ACM-Alice and Bob
    ACM-Satellite Photographs
    ACM-Subset sum
    ACM-Special Array
    数据挖掘-回归分析
    数据库原理-数据库系统的结构
    数据库原理-几种数据模型
  • 原文地址:https://www.cnblogs.com/yhj20170627/p/9084841.html
Copyright © 2011-2022 走看看