冒泡

事件触发后事件流的三个阶段按顺序依次是:

    1、捕获阶段

    2、目标阶段

    3、冒泡阶段

大盒子包裹小盒子,两个盒子都分别添加点击事件,当点击小盒子,两个盒子的事件都会触发。

事件委托

下级元素委托上级元素,将子孙元素的事件注册委托给父级元素来代理:

    1、给父元素注册点击事件

    2、在事件函数中通过( 事件对象.target )获取最先触发的元素( 这就是需要被操作的子元素 )

    3、通过 nodeName 检测是点击了子元素还是点到了父元素上

事件对象的  公共属性方法

属性:

    事件对象.target  → →  获取最先触发的元素

方法:

    事件对象.preventDefault() ; 阻止默认行为( 有兼容性 )

    事件对象.stopPropagation() ; 停止冒泡

重点

1、onmouseover支持冒泡

2、onmouseenter不支持冒泡

栗子

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.box1 {
width: 500px;
height: 500px;
background: pink;
margin:0 auto;
overflow: hidden; }
.box2 {
width: 400px;
height: 350px;
background: yellow;
margin: 50px auto;
overflow: hidden; }
.box3 {
width: 300px;
height: 200px;
background: deeppink;
margin: 50px auto; }
</style>
</head>
<body>
<div class="box1">box1
<div class="box2">box2
<div class="box3">box3 点击里面的盒子会冒泡到外面的盒子</div>
</div>
</div>
<script> // click事件栗子
var box1 = document.querySelector('.box1');
box1.onclick = function(){
alert('添加在box1上的事件');
} // onmouseover事件栗子
var box1 = document.querySelector('.box1');
box1.onmouseover = function(){
console.log('添加在box1上的事件');
}
</script>
</body>
</html>
<!DOCTYPE html>
<html> <head>
<style>
div {
width: 100px;
height: 100px;
margin: 100px auto;
padding: 30px;
text-align: center;
background-color: rgba(255, 192, 203, 0.466);
} p {
width: 200px;
height: 40px;
line-height: 40px;
background-color: deeppink;
}
</style>
</head> <body>
<h5>将鼠标移动到上面两个方块上</h5>
<h5>父元素添加了 onmouseover 事件,子元素未添加,但是当鼠标滑过子元素,也同样会触发事件</h5>
<div onmouseover="myOverFunction()">父
<p id="demo">子</p>
</div>
<i>此栗子参考链接:https://blog.csdn.net/u012309349/article/details/50885149</i> <script>
x = 0;
function myOverFunction() {
document.getElementById("demo").innerHTML = x += 1;
}
</script>
</body> </html>

JavaScript中冒泡与事件委托的更多相关文章

  1. JavaScript事件冒泡和事件委托

    JavaScript事件冒泡和事件委托 付建宇 - 2 条评论 接触JavaScript不久,学的东西也不是特别多.小雨就是习惯把平时学到的东西拿出来分享.一方面加强自己的印象,一方面可以让自己的经验 ...

  2. 在javascript中如何取消事件冒泡

    如果在javascript中只希望事件发生在它的目标而不是在它的父元素上,即取消它的冒泡事件的发生,该如何做?因为按照javascript发生事件的顺序,它由两个阶段:分别从根元素--父元素--目标元 ...

  3. 【JavaScript】事件捕获、事件冒泡与事件委托

    2018年12月18日 最近在学习js时,遇到了三个名词:事件捕获.事件冒泡.事件委托. 一.事件捕获和事件冒泡 事件捕获和事件冒泡是为了解决网页中的事件流(事件发生的顺序)而提出的概念. 事件捕获是 ...

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

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

  5. JavaScript进阶系列06,事件委托

    在"JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数"中已经有了一个跨浏览器的事件处理机制.现在需要使用这个 ...

  6. Dom基础(三):事件冒泡,事件委托(事件代理)和事件捕获

    javascript中的addEventListener(事件名,回调,布尔) 其中第三个参数默认为false-事件冒泡,true为事件捕获 二者区别: 事件冒泡:目标元素事件先触发,然后父元素事件触 ...

  7. 事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE

    ● 事件分为三个阶段:   事件捕获 -->  事件目标 -->  事件冒泡 ● 事件捕获:事件发生时(onclick,onmouseover……)首先发生在document上,然后依次传 ...

  8. javascript的事件冒泡,阻止事件冒泡和事件委托, 事件委托是事件冒泡的一个应用。

    首先,弄明白js 当中,什么是事件,事件模型在js中是如何设计的.什么是事件冒泡? 什么是“事件冒泡”呢?假设这里有一杯水,水被用某种神奇的方式分成不同颜色的几层.这时,从最底层冒出了一个气泡,气泡会 ...

  9. JavaScript面试问题:事件委托和this

            JavaScript不仅门槛低,而且是一门有趣.功能强大和非常重要的语言.各行各业的人发现自己最混乱的选择是JavaSscript编程语言.由 于有着各种各样的背景,所以不是每个人都对 ...

随机推荐

  1. android 注入so

    https://www.52pojie.cn/thread-564459-1-1.html

  2. vue中点击复制粘贴功能

    1.下载clipboard.js cnpm install clipboard --save 2.引入,可以在mian.js中全局引入也可以在单个vue中引入 import Clipboard fro ...

  3. Hibernate.编写xml文件无自动提示信息

    Hibernate.编写xml文件无自动提示信息 注意: 配置 xxxx.hbm.xml 文件的自动提示.和配置 hibernate.cfg.xml 文件的提示,操作步骤是一样的.只是复制的文件内容. ...

  4. MongoDB 在 windows 下的安装与服务配置

    本文转载地址: https://blog.csdn.net/Dorma_Bin/article/details/80851230 本地安装及网页测试 在官网下载最新的安装文件 下载地址 : https ...

  5. 常用脚本lnmp

    3)安装lnmp脚本只供参考需修改相应参数 #!/bin/bash#Function: Install LNMP#Author: wang#Date: 20170809 nginx_install() ...

  6. laravel更改默认的登录密码加密方式

    laravel更改默认的登录密码加密方式   laravel 默认用的登录密码加密方式是: $password = Hash::make('password'); 而我平时用的密码加密方式是: $pa ...

  7. 15. 3Sum(字典)

    Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find ...

  8. Yii Listview

  9. 【转】LoadRunner--Analysis各项指标详解

    转载:https://blog.csdn.net/liangfengchang/article/details/45070321 一.常用到的性能测试术语1.事务(Transaction) 在web性 ...

  10. Python 字典(Dictionary) values()方法

    描述 Python 字典(Dictionary) values() 函数以列表返回字典中的所有值. 语法 values()方法语法: dict.values() 参数 NA. 返回值 返回字典中的所有 ...