冒泡事件-捕获事件-阻止事件

    <div class="div1">
        father
        <div class="div2">son</div>
    </div>

创建父子盒子

    <style>
        .div1{
            width: 200px;
            height: 200px;
            background-color: lightblue;
        }

        .div2{
            width: 100px;
            height: 100px;
            background-color:lightcoral;
        }
    </style>

创建两个盒子的样式

直接上图

冒泡事件代码:

    <script>
        var div1 = document.querySelector(‘.div1‘);
        var div2 = document.querySelector(‘.div2‘);
        div1.addEventListener(‘click‘, function () {
            console.log(1);
        })    
        div2.addEventListener(‘click‘, function (e) {
            console.log(2);
        });
</script>

div1代表父盒子

div2代表子盒子

当子盒子被点击时会先处理自己,搞完自己就产生了冒泡==>就是向上查找直到document结束

为什么不是html而是document? 不是都在html在显示?

w3c里面找到下面解释:

OK,回到正题,也就是点击div2会同时触发自己,和父元素以及上面的body--->html--->document

问题来了?怎么解决,我就只想div2(子元素)做自己

解决方法:

阻止冒泡事件代码:

  

    div2.addEventListener(‘click‘, function (e) {
            console.log(2);       e.stopPropagation();   ===>阻止冒泡IE9+       //e.cancelBubble=true; ===>阻止冒泡IE9一下版本
        });

扩展:

事件处理模型: 从捕获到冒泡

一个对象的一个事件类型只能遵循一种事件模型

触发顺序:先捕获,后冒泡

左边是捕获顺序,右边是冒泡顺序

捕获true  ==>

div1.addEventListener(‘click‘,function(){console.log(1)},true);    //捕获先执行

div2.addEventListener(‘click‘,function(){console.log(2)},false);     //事件源跟false和true无关,正常顺序执行

div1.addEventListener(‘click‘,function(){console.log(3)},false);    //冒泡从下到上==>div2最底层完了,这一行就执行

结果:1  2 3

扩展2:

div1.addEventListener(‘click‘,function(){console.log(1)},false);

div2.addEventListener(‘click‘,function(){console.log(2)},false);  

div2.addEventListener(‘click‘,function(){console.log(4)},true);

div1.addEventListener(‘click‘,function(){console.log(3)},true);

分析:先捕获找true   div2和div1 由于div2是事件源头不用考虑true/false 所以输出3

    捕获完了,看false 冒泡  从底层(事件源)向上冒泡   输出 2  4  1

原文地址:https://www.cnblogs.com/linxim/p/11406195.html

时间: 2024-11-19 18:51:44

冒泡事件-捕获事件-阻止事件的相关文章

javascript事件之: 事件冒泡, 事件捕获 ,阻止默认事件

谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. 冒泡篇: 先来看一段实例: js: var $input = document.getElementsByTagName("input")[0]; var $div = document.getElementsByTagName("div")[0]; var $body = document.getElementsByTagName("

[JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

-->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的onclick事件也会被触发.js里称这种事件连续发生的机制为事件冒泡或者事件捕获.IE浏览器:事件从里向外发生,事件从最精确对象(target)开始触发,然后到最不精确的对象(document)触发,即事件冒泡 Netscape:事件从外向里发生,事件从最不精确的对象(document)开始触发,然后到最精确对象(

js阻止浏览器、元素的默认事件与js阻止事件冒泡、阻止事件流

嵌套的div元素,如果父级和子元素都绑定了一些事件,那么在点击最内层子元素时可能会触发父级元素的事件,下面介绍一下js阻止默认事件与js阻止事件冒泡示例,大家参考使用吧 1. event.preventDefault();  -- 阻止元素的默认事件.注:a元素的点击跳转的默认事件 , button,radio等表单元素的默认事件 , div 元素没有默认事件 例: 复制代码代码如下: <a href="http://www.baidu.com" target="_bl

事件流(事件冒泡、事件捕获和DOM事件流)

事件流是用来描述html页面中接收事件的顺序的. IE给出的顺序叫做事件冒泡. Netscape给出的顺序叫做事件捕获. <!Doctype> <html> <body> <div id="btn">Click me</div> </body> </html> 事件冒泡正如其名,向鱼类吐泡泡一样.当点击上面div时,最先接收到click事件的是div元素本身.因为它是文本中当前所交互的元素里嵌套最深的那

js之事件冒泡和事件捕获及其阻止详细介绍

虽然精通jquery,但对它的原型javascript却不是很了解,最近在学习javascript中遇到了一些困难,比如冒泡和捕获,很多次被提到,但又不知究竟应用在何处.找到了一些好文章解惑,在这里分享给大家 一.事件的发生顺序 这个问题的起源非常简单,假设你在一个元素中又嵌套了另一个元素 复制代码代码如下: -----------------------------------| element1                        ||   --------------------

js阻止默认事件与js阻止事件冒泡

e.stopPropagation(); //阻止事件冒泡 功能:停止事件冒泡 function stopBubble(e) { // 如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) { // 因此它支持W3C的stopPropagation()方法 e.stopPropagation(); } else { // 否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; } }

js 事件冒泡与事件捕获

一.事件冒泡 事件冒泡是指在事件发生过程中先从目标节点开始执行,并一层一层的相父节点依次查询直到document,并执行相同事件的过程. btn1.addEventListener('click',function(e){ //true 为事件捕获,false 为事件冒泡 //false为默认方式,冒泡方式执行 //点击btn1时,如果是事件冒泡,则先执行btn1上的click事件,然后执行父元素div1上的click事件 //如果是事件捕获,则先执行父元素上的click事件,然后执行btn1上

Atitit. &#160;Js 冒泡事件阻止&#160;事件捕获&#160;&#160;&#160;事件传递 &#160;事件代理

Atitit.  Js 冒泡事件阻止 事件捕获   事件传递  事件代理   1. 事件冒泡1 2. 事件捕获1 3. 同时支持了事件捕获阶段和事件冒泡阶段ddEventListener的第三个参数1 4. 事件代理3 5. 冒泡还是捕获?3 6. Js 冒泡事件阻止3 6.1. 返回false5 7. 事件冒泡 使处理函数有范围较大的触发面积,在“拖拽效果”脚本中是必须的5 8. refe6 8.1.1. 浅谈事件冒泡与事件捕获 - ac黄博客精选 - SegmentFault6   1. 事

JS中事件冒泡(Bubble)和事件捕获(Capture)以及如何阻止事件的冒泡

对“捕获”和“冒泡”这两个概念,通常我们对冒泡了解和使用的会更多一些,因为在我们使用的所有浏览器中,都支持事件冒泡 ,即事件由子元素向祖先元素传播的,就 像气泡从水底向水面上浮一样.而在像firefox,chrome,safari这类所谓的标准浏览器中,事件传播通常是有三个阶段的:事件捕获阶段,事件目标阶段,事件冒泡阶段,这三者的执行的顺序是先捕获在冒泡.对于捕获阶段,这个很少 有用武之地,所以被人疏忽遗忘也在所难免了,不常用不代表它不存在,本着科学严谨的态度,我们有必要去看一下它的庐山真面目.

JS中的事件冒泡(Bubble)和事件捕获(capture)以及如何阻止事件的冒泡

对“捕获”和“冒泡”这两个概念,通常我们对冒泡了解和使用的会更多一些,因为在我们使用的所有浏览器中,都支持事件冒泡 ,即事件由子元素向祖先元素传播的,就 像气泡从水底向水面上浮一样.而在像firefox,chrome,safari这类所谓的标准浏览器中,事件传播通常是有三个阶段的:事件捕获阶段,事 件目标阶段,事件冒泡阶段,这三者的执行的顺序是先捕获在冒泡.对于捕获阶段,这个很少 有用武之地,所以被人疏忽遗忘也在所难免了,不常用不代表它不存在,本着科学严谨的态度,我们有必要去看一下它的庐山真面目