一、事件流

1.事件流

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

2.事件冒泡

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

(最具体 –> 最不具体)

3.事件捕获

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

(最不具体 –> 最具体)

2.事件处理

1.HTML事件处理

直接添加到HTML结构中

2.DOM0级事件处理

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

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

3.DOM2级事件处理

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

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

true:事件捕获

false:事件冒泡

removeEventListener();

  1. <button id="btn">按钮</button>
  2. <button id="btn2">DOM2级按钮</button>
  3. <script type="text/javascript">
  4. //document.getElementById("btn").onclick = function () {
  5. // alert("DOM0级事件处理1");//多个事件会被覆盖掉
  6. //}
  7. //document.getElementById("btn").onclick = function () {
  8. // alert("DOM0级事件处理2");
  9. //}
  10.  
  11. var btn2 = document.getElementById("btn2");
  12. btn2.addEventListener("click", function () {
  13. alert("DOM2级事件处理1");
  14. })
  15.  
  16. btn2.addEventListener("click", demo1);
  17. btn2.addEventListener("click", demo2);
  18.  
  19. function demo1() {
  20. alert("DOM2级事件处理2");
  21. }
  22.  
  23. function demo2() {
  24. alert("DOM2级事件处理3");
  25. }
  26. //移除
  27. //btn2.removeEventListener("click", demo2);
  28. </script>

4.IE事件处理程序

attachEvent

detachEvent

3.事件对象

事件对象event

1).type:获取事件类型

2).target:获取事件目标

  1. <div id="div1">
  2. <button id="btn1">按钮</button>
  3. </div>
  4. <script type="text/javascript">
  5. var btn1 = document.getElementById("btn1");
  6. var div1 = document.getElementById("div1");
  7. btn1.addEventListener("click", showType);
  8. div1.addEventListener("click", showDiv);
  9. function showType(event) {
  10. document.write(event.type+"<br>");
  11. document.write(event.target + "<br>");
  12. }
  13.  
  14. function showDiv(event) {
  15. alert("div");
  16. }
  17. </script>

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

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

  1. function showType(event) {
  2. document.write(event.type+"<br>");
  3. document.write(event.target + "<br>");
  4.  
  5. //组织事件冒泡
  6. event.stopPropagation();
  7. }

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

(1)

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

js

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

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

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

(3)阻止默认行为

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

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

javascript - 事件详解的更多相关文章

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

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

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

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

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

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

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

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

  5. JavaScript事件详解

    1.事件传播机制:事件冒泡,事件捕获.      2.注册事件处理程序方式: 设置html标签属性为事件处理程序,文档元素的事件处理程序属性,名字由“on”后面跟着事件名组成,例如:onclick,o ...

  6. javascript - 事件详解(阻止事件冒泡+阻止事件行为)

    一.事件流 1.事件流 描述的是在页面中接受事件的顺序 2.事件冒泡 由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点 (最具体 –> 最不具体) 3.事件捕获 最不具体的节点先接收事 ...

  7. 原生JavaScript事件详解

    JQuery这种Write Less Do More的框架,用多了难免会对原生js眼高手低. 小菜其实不想写这篇博客,貌似很初级的样子,但是看到网络上连原生js事件绑定和解除都说不明白,还是决定科普一 ...

  8. javascript事件详解1

    事件流讲解来袭,嘎嘎嘎嘎嘎 ---------------------------------------------------------------- 1.事件流:描述的是在页面中接受事件的顺序 ...

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

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

随机推荐

  1. AMD正式公布第七代桌面级APU AM4新接口

    导读 本月5日,AMD正式公布了入门级的第七代桌面级APU为Bristol Ridge,在性能和能效方面较上一代产品拥有显著提升.AMD同时确认Zen处理器和新APU(Bristol Ridge)都将 ...

  2. awk系列:在awk中如何使用流程控制语句

    导读 当你回顾所有到目前为止我们已经覆盖的 awk 实例,从 awk 系列的开始,你会注意到各种实例的所有指令是顺序执行的,即一个接一个地执行.但在某些情况下,我们可能希望基于一些条件进行文本过滤操作 ...

  3. python trackback的使用心得

    以前在读代码的时候总是要花很久时间去找在哪里调用的某个函数,现在好了,直接使用:trackback.print_stack()就可以打印出调用栈了,在那个地方调用的一目了然... 而如果是异常栈的话就 ...

  4. 剑指Offer 替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.   思路: 替换空格,先遍历一遍记 ...

  5. OpenCv椭圆皮肤模型

    Mat input_image; Mat output_mask; Mat output_image; void main() { VideoCapture cam(); if (!cam.isOpe ...

  6. ReLU 和sigmoid 函数对比以及droupout

    参考知乎的讨论:https://www.zhihu.com/question/29021768 1.计算简单,反向传播时涉及除法,sigmod求导要比Relu复杂: 2.对于深层网络,sigmod反向 ...

  7. HDU 2819 隐式二分图匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=2819 这道题乍一看是矩阵变换题,估计用矩阵之类的也可以做 但是分析一下就可以知道 要凑成对角线都是1,题目允许行 ...

  8. BZOJ 2574: [Poi1999]Store-Keeper

    Description 推箱子. \(n,m\leqslant 100\) Sol Tarjan+边双连通分量+BFS. 直接搜索的复杂度是 \(n^6\) 记录人的位置,箱子的位置和转移. 箱子的位 ...

  9. ja

    import java.util.*; class animal{     void cry(){            }     void get_animal_name(){           ...

  10. php类与对象

    1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User(); 实例化后的$a 引用:php的别名,两个不同的变量名字指向相同的内容 封装: 把对象的属性和方法组织在一个类(逻辑 ...