返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript中事件冒泡机制示例详析
  • 883
分享到

JavaScript中事件冒泡机制示例详析

2024-04-02 19:04:59 883人浏览 独家记忆
摘要

什么是冒泡? DOM事件流(event  flow )存在三个阶段:事件捕获阶段、 处于目标阶段、 事件冒泡阶段。 事件捕获(event  capturing)

什么是冒泡?

DOM事件流(event  flow )存在三个阶段:事件捕获阶段、 处于目标阶段、 事件冒泡阶段。

事件捕获(event  capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件。

事件冒泡(dubbed  bubbling):与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点。

dom标准事件流的触发的先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。不同的浏览器对此有着不同的实现,IE10及以下不支持捕获型事件,所以就少了一个事件捕获阶段,IE11、Chrome 、Firefox、Safari等浏览器则同时存在。

addEventListener()方法

这个方法设定一个事件监听器,当某一事件发生通过设定的参数执行操作。语法是:

addEventListener(event, function, useCapture)

参数 event 是必须的,表示监听的事件,例如 click, touchstart 等,就是之前不加前缀 on 的事件。

参数 function 也是必须的,表示事件触发后调用的函数,可以是外部定义函数,也可以是匿名函数。

参数 useCapture 是选填的,填true或者false,用于描述事件是冒泡还是捕获,true表示捕获,默认的false表示冒泡。

移除事件监听

如果要移除 addEventListener() 添加的事件监听,就要使用removeEventListener(),语法是:

removeEventListener(event, function)

参数与addEventListener()一致。

兼容性

IE 8及更早的版本,和Opera 7.0及更早的版本,不支持 addEventListener() 和 removeEventListener() 方法,他们使用的是一下方法代替:

添加事件:

attachEvent(event, function)

移除事件:

**detachEvent(event, function) **

可以用以下方法解决兼容性问题:


if (div1.addEventListener) {
         div1.addEventListener('click', function () {
             console.log("支持")
         });
} else if (div1.attachEvent) {
         div1.attachEvent('onclick', function () {
             console.log("不支持")
         });
}

冒泡和捕获的具体区别

html


    <div id="div1">
         <div id="div2"></div>
    </div>

js


<script>
        var div1 = document.getElementById("div1");
        var div2 = document.getElementById("div2");
        div1.addEventListener('click',function(){
            console.log("div1--捕获阶段")
        },true);
        div2.addEventListener('click',function(){
            console.log("div2--捕获阶段")
        },true);
        div1.addEventListener('click',function(){
            console.log("div1--冒泡阶段")
        });
        div2.addEventListener('click',function(){
            console.log("div2--冒泡阶段")
        });
</script>

输出结果(点击div2的时候执行的结果)

解决办法


function stopBubble(e) {
         if (e && e.stopPropagation) {
                e.stopPropagation(); //因此它支持W3C的stopPropagation()方法 
         } else {
             window.event.cancelBubble = true; //否则,我们需要使用IE的方式来取消事件冒泡 
         }
}

 

总结

到此这篇关于javascript中事件冒泡机制的文章就介绍到这了,更多相关JavaScript事件冒泡内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript中事件冒泡机制示例详析

本文链接: https://lsjlt.com/news/127812.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript中事件冒泡机制示例详析
    什么是冒泡? DOM事件流(event  flow )存在三个阶段:事件捕获阶段、 处于目标阶段、 事件冒泡阶段。 事件捕获(event  capturing)...
    99+
    2024-04-02
  • JavaScript中事件冒泡的示例分析
    这篇文章主要介绍JavaScript中事件冒泡的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是事件冒泡?事件冒泡刚好与事件捕获相反,当前元素---->body -...
    99+
    2024-04-02
  • JS中的事件冒泡机制实例分析
    这篇文章主要介绍“JS中的事件冒泡机制实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JS中的事件冒泡机制实例分析”文章能帮助大家解决问题。1. 事件在浏览器...
    99+
    2024-04-02
  • 事件冒泡是什么?深入解析事件冒泡机制
    事件冒泡是什么?深入解析事件冒泡机制 事件冒泡是Web开发中一个重要的概念,它定义了页面上事件传递的方式。当一个元素上的事件被触发时,事件将会从最内层的元素开始传递,逐级向外传递,直到...
    99+
    2024-02-22
    事件机制 深入解析 事件冒泡 点击事件
  • JavaScript事件捕获冒泡分析
    本篇内容主要讲解“JavaScript事件捕获冒泡分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript事件捕获冒泡分析”吧!一、事件流JavaScript中,事件流指的是DOM...
    99+
    2023-06-25
  • js事件冒泡与事件捕获的示例分析
    这篇文章给大家分享的是有关js事件冒泡与事件捕获的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(一)事件绑定1.普通事件绑定给html添加一个以on开头的特定的属性(如...
    99+
    2024-04-02
  • 微信小程序中冒泡事件的示例分析
    这篇文章主要介绍微信小程序中冒泡事件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在微信小程序的事件分为冒泡事件和非冒泡事件:冒泡事件:当一个组件上的事件被触发后,该事件会...
    99+
    2024-04-02
  • JavaScript中捕获与冒泡的示例分析
    小编给大家分享一下JavaScript中捕获与冒泡的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript中...
    99+
    2024-04-02
  • JavaScript中事件机制的示例分析
    这篇文章主要介绍JavaScript中事件机制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事件是将JavaScript脚本与网页联系在一起的主要方式,是JavaScrip...
    99+
    2024-04-02
  • JavaScript中怎么阻止事件冒泡
    JavaScript中怎么阻止事件冒泡,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码实例如下:] <!DOCTYPE ...
    99+
    2024-04-02
  • javascript事件冒泡,事件捕获和事件委托详解
    1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的事件...
    99+
    2024-04-02
  • javascript中冒泡排序实例分析
    本篇内容介绍了“javascript中冒泡排序实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • JavaScript 事件捕获冒泡与捕获详情
    目录一、事件流1、概念2、DOM事件流二、事件委托1、事件委托的优点2、事件委托的使用三、禁止事件冒泡与捕获四、参考文献一、事件流 JavaScript中,事件流指的是DOM事件流。...
    99+
    2024-04-02
  • 浅析js中事件冒泡与事件捕获
    目录01-事件冒泡1.1-事件冒泡介绍1.2-事件冒泡利用(事件委托)1.3-事件冒泡影响 与 阻止事件冒泡02-事件捕获1.1-事件捕获介绍1.2-事件三个阶段01-事件冒泡 1...
    99+
    2024-04-02
  • WPF中隧道路由和冒泡路由事件的示例分析
    这篇文章主要介绍了WPF中隧道路由和冒泡路由事件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  WPF中使用路由事件升级了传统应用开发中的事件,在WPF中使用路由...
    99+
    2023-06-14
  • javascript中事件执行机制的示例分析
    小编给大家分享一下javascript中事件执行机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先看一段代码各位小伙...
    99+
    2024-04-02
  • JavaScript中怎么捕捉事件和阻止冒泡事件
    JavaScript中怎么捕捉事件和阻止冒泡事件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、要探究捕获和冒泡事件,首先要...
    99+
    2024-04-02
  • Javascript事件的捕获方式和冒泡方式详解
    目录一、事件处理模型1、事件冒泡(1)给三个div元素绑定事件(2)运行结果:2、事件捕获(1)给三个div元素绑定事件(2)运行结果:二、阻止事件冒泡(1)w3c标准 event....
    99+
    2024-04-02
  • JavaScript中的事件冒泡与捕获怎么实现
    这篇文章主要讲解了“JavaScript中的事件冒泡与捕获怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中的事件冒泡与捕获怎么实...
    99+
    2024-04-02
  • C语言中冒泡排序的示例分析
    这篇文章给大家分享的是有关C语言中冒泡排序的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(壹)冒泡排序1.1冒泡排序的设计冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作