JS中 事件冒泡与事件捕获

时间:2023-02-09 19:24:03

  【JS中的事件流】
     1、事件冒泡:当某DOm元素触发一种事件时,会从当前节点开始,逐级往上触发其祖先节点的同类型事件,直到DOM根节点;
           >>>什么情况下会产生事件冒泡
      ① DOM0模型绑定事件,全部都是冒泡
      ② IE8之前,使用attachEvent()绑定事件、全部都是冒泡
      ③ 其他浏览器,使用addEventLinstener()添加事件,当第三个参数省略或者为false时,为事件冒泡
     2、事件捕获:当其DOM元素触发一种事件时,会从文档根节点开始,逐级向下触发其祖先节点的同类型事件,直到该节点自身。
           >>>什么情况下触发事件捕获:
      ① 使用addEventListener添加事件,当第三个参数省略或者为true时,为事件捕获。

      JS中 事件冒泡与事件捕获
     3、阻止事件冒泡
        在IE浏览器中,使用 e.cancelBubble = true;
        在其他浏览器中,使用 e.stopPropagation();
        兼容所有浏览器的写法:
           function myParagraphEventHandler(e) {
              e = e || window.event;
            if (e.stopPropagation) {
              e.stopPropagation(); //IE以外
             } else {
              e.cancelBubble = true; //IE
            }
          }

    4、取消事件默认行为
       在IE浏览器中,使用 e.returnValue = false;
       在其他浏览器中,使用 e.preventDefault();
       兼容所有浏览器的写法:
          function eventHandler(e) {
              e = e || window.event;
                // 防止默认行为
          if (e.preventDefault) {
              e.preventDefault(); //IE以外
          } else {
              e.returnValue = false; //IE
          }
        }

         div1.addEventListener("click",function(e){
            e.stopPropagation();*///不考虑老版本IE,可以使用这一句话
            console.log("div1触发事件");
          },false);
         div2.addEventListener("click",function(){
            myParagraphEventHandler();*/// 考虑老版本IE兼容性,可以封装一个函数调用
            console.log("div2触发事件");
          },false);
            div3.addEventListener("click",function(){
             myParagraphEventHandler();
              console.log("div3触发事件");
          },false);

              // 阻止事件冒泡
        function myParagraphEventHandler(e) {
            e = e || window.event;
            if (e.stopPropagation) {
            e.stopPropagation(); //IE以外
          } else {
            e.cancelBubble = true; //IE
          }
        }

        function eventHandler(e) {
          e = e || window.event;
            // 防止默认行为
        if (e.preventDefault) {
          e.preventDefault(); //IE以外
        } else {
          e.returnValue = false; //IE
       }
      }

JS中 事件冒泡与事件捕获的更多相关文章

  1. JS中绑定事件顺序(事件冒泡与事件捕获区别)

    在JS中,绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段(重要),这也是为什么当父类和子类都绑定了某个事件,会先调用子类绑定的事件,后调用父类的事件.直接看下面实例 <!Doctype ...

  2. JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE

    转载请注明出处:http://www.cnblogs.com/zhangmingze/p/4864367.html   ● 事件分为三个阶段:   事件捕获 -->  事件目标 -->   ...

  3. JavaScript 进阶教程一 JavaScript 中的事件流 - 事件冒泡和事件捕获

    先看下面的示例代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Jav ...

  4. JS事件(事件冒泡和事件捕获)

    事件流:描述的是在页面中接收事件的顺序 事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档) 事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件 DOM中:用 ...

  5. js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获

    js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获 一.总结 一句话总结:他们是描述事件触发时序问题的术语.事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件 ...

  6. JS事件冒泡与事件捕获怎么理解&quest;

    在js中存在事件冒泡与事件捕获两种概念,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题. 事件冒泡(dubbed bubbling) 事件冒泡我们从字面意思理解就是当用户行为触发我们页面的定 ...

  7. javascript中的事件冒泡、事件捕获和事件执行顺序

    谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有 ...

  8. js 事件冒泡和事件捕获

    事件流:指的是网页中元素接受事件的顺序,它是一个概念,而不是具体的实际的东西 事件冒泡:指的是内层元素的事件,会触发包含着此元素的外层元素的事件,触发的顺序是:由内而外的 例如: <!DOCTY ...

  9. js高级:event,事件冒泡,事件捕获

    1.事件 浏览器客户端上客户触发的行为都称为事件 所有的事件都是天生自带的,不需要我们去绑定,只需要我们去触发. 通过 obj.事件名=function(){} 事件名:onmouseover 鼠标悬 ...

  10. 彻底弄懂JS的事件冒泡和事件捕获(不推荐阅读)

    由于搬去敌台了,好久没来博客园,今天无意中翻到有“误认子弟”的评论,这里特意做个说明. 本文中关于事件冒泡和事件捕获的描述和例子都是OK的,错就错在后面用jquery去展示了利用事件冒泡的例子有误,其 ...

随机推荐

  1. Double的精度问题

    /** * 自定义Math工具类 * */ public class MyMathTools { /** * 提供精确的小数位四舍五入处理. * * @param v * 需要四舍五入的数字 * @p ...

  2. 由ASP&period;NET所谓前台调用后台、后台调用前台想到HTTP——理论篇

    工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...

  3. WS103C8例程——串口2【worldsing笔记】

    在超MINI核心板 stm32F103C8最小系统板上调试Usart2功能:用Jlink 6Pin接口连接WStm32f103c8的Uart2,PC机向mcu发送数据,mcu收到数据后数据加1,回传给 ...

  4. android布局2

    Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料. 第一类:属性值为true或false android:layout_centerHrizontal ...

  5. C&num; httpclient获取cookies实现模拟web登录

    目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ...

  6. Java编写的接口测试工具

    这几天由于要频繁地使用一些天气数据接口,但是每次都要频繁的打开网页,略显繁琐,故就自己做了两个json数据获取的小工具. 第一个 先来看看第一个吧,思路是使用一个网络流的处理,将返回的json字符串数 ...

  7. Centos6&period;5 pppoe-server

    [root@localhost network-scripts]# rpm -q rp-pppoepackage rp-pppoe is not installed ----------------- ...

  8. linux几个命令

    ll |wc -l 统计目录下多少文件 df -h 磁盘统计大小 du -sh 该目录占磁盘总大小 du -sh * 该目录下每个目录占用磁盘大小

  9. 常用社交网络(微博等)动态新闻(feed、新鲜事)系统浅析(转)

    add by zhj:同时也看看国外牛逼公司是怎么做的吧 Stream-Framework    Python实现的feed Twitter 2013 Redis based, database fa ...

  10. 基本数据结构 -- 栈简介(C语言实现)

    栈是一种后进先出的线性表,是最基本的一种数据结构,在许多地方都有应用. 一.什么是栈 栈是限制插入和删除只能在一个位置上进行的线性表.其中,允许插入和删除的一端位于表的末端,叫做栈顶(top),不允许 ...