一、事件流

1.事件流

描述的是在页面中接受事件的顺序

2.事件冒泡

由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点

(最具体 –> 最不具体)

3.事件捕获

最不具体的节点先接收事件,而最具体的节点应该是最后接收事件

(最不具体 –> 最具体)

2.事件处理

1.HTML事件处理

直接添加到HTML结构中

2.DOM0级事件处理

把一个函数赋值给一个事件处理程序属性

<button id="btn">按钮</button>
<script type="text/javascript">
document.getElementById("btn").onclick = function () {
alert("DOM0级事件处理1");//多个事件会被覆盖掉
}
document.getElementById("btn").onclick = function () {
alert("DOM0级事件处理2");
}
</script>

3.DOM2级事件处理

addEventListener(“事件名”,”“事件处理函数”,“布尔值”)

当前版本,一般布尔值都不操作。

true:事件捕获

false:事件冒泡

removeEventListener();

<button id="btn">按钮</button>
<button id="btn2">DOM2级按钮</button>
<script type="text/javascript">
//document.getElementById("btn").onclick = function () {
// alert("DOM0级事件处理1");//多个事件会被覆盖掉
//}
//document.getElementById("btn").onclick = function () {
// alert("DOM0级事件处理2");
//} var btn2 = document.getElementById("btn2");
btn2.addEventListener("click", function () {
alert("DOM2级事件处理1");
}) btn2.addEventListener("click", demo1);
btn2.addEventListener("click", demo2); function demo1() {
alert("DOM2级事件处理2");
} function demo2() {
alert("DOM2级事件处理3");
}
//移除
//btn2.removeEventListener("click", demo2);
</script>

4.IE事件处理程序

attachEvent

detachEvent

3.事件对象

事件对象event

1).type:获取事件类型

2).target:获取事件目标

<div id="div1">
<button id="btn1">按钮</button>
</div>
<script type="text/javascript">
var btn1 = document.getElementById("btn1");
var div1 = document.getElementById("div1");
btn1.addEventListener("click", showType);
div1.addEventListener("click", showDiv);
function showType(event) {
document.write(event.type+"<br>");
document.write(event.target + "<br>");
} function showDiv(event) {
alert("div");
}
</script>

3).stopPropagation():阻止事件冒泡

没有调用showDiv,冒泡被取消了。

function showType(event) {
document.write(event.type+"<br>");
document.write(event.target + "<br>"); //组织事件冒泡
event.stopPropagation();
}

4).preventDefault():组织事件默认行为

(1)

<a id="aid" href="http://www.baidu.com">百度</a>

js

 document.getElementById("aid").addEventListener("click", showaid);
function showaid() {
alert(1);
}

(2)在showaid方法里面,添加

e.stopPropagation();//阻止事件冒泡

(3)阻止默认行为

function showaid(e) {
alert(1);
e.stopPropagation();//阻止事件冒泡
e.preventDefault();//阻止默认行为(这里是跳转baidu)
}

----->------>

javascript - 事件详解(阻止事件冒泡+阻止事件行为)的更多相关文章

  1. 【转载】C# 中的委托和事件(详解:简单易懂的讲解)

    本文转载自http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html C# 中的委托和事件(详解) C# 中的委托和事件 委托和事件在 ...

  2. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  3. JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】

    正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...

  4. JavaScript事件详解-zepto的事件实现

    zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...

  5. JAVASCRIPT事件详解-------原生事件基础....

    javaScirpt事件详解-原生事件基础(一)   事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能 ...

  6. react第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制)

    第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制) 课程目标 深入理解和掌握事件的冒泡及捕获机制 理解react中的合成事件的本质 在react组件中合理的使用原生事件 ...

  7. JavaScript中的鼠标滚轮事件详解

    JavaScript中的鼠标滚轮事件详解/*Firefox注册事件*/ ~~~Firefox: addEventListener('DOMMouseScroll', handler, false)if ...

  8. DOM——事件详解

    事件 事件:触发-响应机制 事件三要素 事件源:触发(被)事件的元素 事件名称: click 点击事件 事件处理程序:事件触发后要执行的代码(函数形式) 事件的基本使用  var box = docu ...

  9. 移动端开发touchstart,touchmove,touchend事件详解和项目

    移动端开发touchstart,touchmove,touchend事件详解和项目 最近在做移动端的开发,在一个“服务商管理”页面使用到了触摸事件"touchstart",&quo ...

  10. 第三天:JS事件详解-事件流

    学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容:  1)基础概念 2)举例说明: 代码如上,如果用事件 ...

随机推荐

  1. 目录:Matrix Differential Calculus with Applications in Statistics and Econometrics,3rd_[Magnus2019]

    目录:Matrix Differential Calculus with Applications in Statistics and Econometrics,3rd_[Magnus2019] Ti ...

  2. git push 到 github

    今天来简单整理一下,如何利用git命令把代码提交到GitHub平台上去,当然要提交代码到GitHub上去,您首先得要有GitHub账号,账号如何申请这里就不多做解释了 第一步:先到官网下载git安装包 ...

  3. python中的else语句

    python语言和其它语言一样在支持else语句,通常else语句和if语句合用,完成程序的分支选择功能. 例如如下打印学成成绩代码: score = int(input("请输入成绩:&q ...

  4. 【LeetCode】451-根据字符出现频率排序

    题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和' ...

  5. Java 实现《编译原理》简单-语法分析功能-LL(1)文法 - 程序解析

    Java 实现<编译原理>简单-语法分析功能-LL(1)文法 - 程序解析 编译原理学习,语法分析程序设计 (一)要求及功能 已知 LL(1) 文法为: G'[E]: E→TE' E'→+ ...

  6. tensorflow以文件形式运行程序实例

    在命令行中进入到代码所在文件夹 执行python mnist2.p或python aaa/mnist2.py这种形式

  7. spring+mybatis 多数据源的配置

    方式一: 参见博客https://www.cnblogs.com/AmbitiousMice/p/6027674.html 此种方式每次需要在调用dao的时候设置对应的数据源. 方式二: 直接在myb ...

  8. UVALive - 5695 The Last Puzzle (思维+区间dp)

    题目链接 题目大意:有n个按钮排成一条直线,你的任务是通过左右移动按下所有按钮,按钮如果一段时间没有被按下就会被弹开. 以下是我的推论(不一定正确): 直观地看的话,如果选择的是最优路径,那么路径的形 ...

  9. UML(Rational Rose)安装教程【载百度经验】

    ---恢复内容开始--- Win7安装rational rose2007教程 在UML建模的众多工具中,IBM公司的rational rose建模工具可以说是最好用的建模工具了.哪我们又该如何在win ...

  10. linux运维、架构之路-Kubernetes基础(一)

    一.Kubernetes介绍 Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统.Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并 ...