1.事件

  浏览器客户端上客户触发的行为都称为事件

所有的事件都是天生自带的,不需要我们去绑定,只需要我们去触发。

通过 obj.事件名=function(){}

事件名:onmouseover 鼠标悬浮

     onmouseout   鼠标移除

    onmousedown鼠标按下

    onmouseup     鼠标抬起

    onmouseenter 鼠标进入

    onmouseleare 鼠标离开

    onmousemove鼠标移动

    onfocus      表单聚焦

    onblur         表单失去焦点

    onchang   表单修改

    onclick    点击

当用户触发一个事件,浏览器的所有详细信息都存在一个叫event的对象上

我们把它叫事件对象 

所有事件绑定方法的时候,天生自带一个参数叫event

鼠标的坐标

      Event.ClientX

      Event.ClientY

Event的兼容性

在chrome下event是undefined在ie低版本下是null,火狐下会报错

document.onclick=function(e){

var e=e||window.event

}

2.事件冒泡

什么叫事件冒泡?

当给父子元素的同一事件绑定方法时,触发子元素身上的事件,执行完毕之后,也会触发元级元素的相同事件,这种传播机制叫事件冒泡。

取消事件冒泡

event对象有个属性叫cancelBubble默认值是false改成true就取消当前事件冒泡

3.事件捕获

给一个元素绑定事件,普通写法是

obj.onclick=function(){}这相当于给obj的onclick属性赋值一个道理

obj.onclick=function(){}

这种写法有一点不好,后者会将前者覆盖

事件绑定的第二种写法

标准浏览器用addEventListener()这个方法

Ie低版本用attachEvent()这个方法

addEventListener(参数1,参数2,参数3)

参数1 是事件名 事件名不能带on

参数2  时间函数

参数3  布尔值 代表捕获不捕获 默认是dalse 不能捕获但是冒泡

事件捕获

      1.ie低版本没有捕获

       2.普通事件绑定写法没有捕获

事件捕获

  给父子元素用addEventListener()绑定同一个事件,当触发子元素身上的事件,先会触发父元素,然后在传递给子元素,这种传播机制叫事件捕获

attachEvent()和addEventListener()二者的区别

1.  attchEvent 只用ie8以下,addEventListener()适合标准浏览器

2.  attchEvent()的事件名带on而addEventListener函数里面的this是当前元素对象

attchEvent只有冒泡没有捕获 addEventListener()有冒泡也有捕获

4. Call和apply()

特别强调一下xxx必须是function(普通函数,类,构造函数)

var obj={

name:"哈喽"

}

function fn(){

console.log(this.name)

}

fn.call(obj)

Call()中第一个参数是null的时候,函数里的this还是指向原来的,不变。

所有事件都是异步的。

js高级:event,事件冒泡,事件捕获的更多相关文章

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

    -->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...

  2. 理解js事件冒泡事件委托事件捕获

    js事件冒泡 javascript的事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止,这就是事件冒泡现象. <di ...

  3. JS 事件冒泡、捕获。学习记录

    作为一个转行刚到公司的新人,任务不多,这一周任务全部消灭,闲暇的一天也别闲着,悄悄的看起了书.今天写一下JS的事件冒泡.捕获. 也是今天看的内容有点多了,有些消化不了,就随手记录一下.纯属自我理解,如 ...

  4. 事件冒泡与捕获&amp;事件托付

    设想这样一种情况 一个div里面有个span元素  ,当鼠标单击span时,这个事件算是谁的? div还是span? 准确的说两个都触发了,这种认可大家都允许,事实就是这种, 第二个问题来了,这个事件 ...

  5. js事件机制——事件冒泡和捕获

    概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的onclick事件也会被触发.js里称这种事件连续发生的机制为事件冒泡或者事件捕获. IE浏览器:事件从 ...

  6. JS事件冒泡与捕获

    1事件传播——冒泡与捕获 默认情况下,事件使用冒泡事件流,不使用捕获事件流.然而,在Firefox和Safari里,你可以显式的指定使用捕获事件流,方法是在注册事件时传入useCapture参数,将这 ...

  7. js 事件冒泡、捕获;call()、apply()

    他们是描述事件触发时序问题的术语.事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件冒泡是自下而上的去触发事件.绑定事件方法的第三个参数,就是控制事件触发顺序是 ...

  8. JS——事件冒泡与捕获

    事件冒泡与事件捕获 1.冒泡:addEventListener("click",fn,false)或者addEventListener("click",fn): ...

  9. js --- 事件冒泡 事件捕获

    先上结论: 他们是描述事件触发时序问题的术语.事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件冒泡是自下而上的去触发事件.绑定事件方法的第三个参数,就是控制事 ...

  10. H5_0012:js事件冒泡和捕获

    捕获(capture)和冒泡(bubble)是事件传播过程中的两个概念, 比如用户单击某个元素, 但由于元素处于父元素内, 该父元素又处于document对象中, document对象又处于windo ...

随机推荐

  1. 第68节:Java中的MYSQL运用从小白到大牛

    第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...

  2. H5新增属性contenteditable(不用JS,实现div模拟textarea高度自增长)

    无意中看到一篇博客介绍了contenteditable这个属性——不需用JS,只需在div里加上contenteditable="true",即可实现div模拟textrarea( ...

  3. NumPy 学习笔记(一)

    NumPy: 1.NumPy 是一个功能强大的第三方库(需要自己安装),主要用于对多维数组执行计算:   它提供了大量的库函数和操作,可以帮助程序员更轻松地进行数值计算 2.可以和另外两个第三方库 S ...

  4. AI - 学习路径(Learning Path)

    初见 机器学习图解 错过了这一篇,你学机器学习可能要走很多弯路 这3张脑图,带你清晰人工智能学习路线 一些课程 Andrew Ng的网络课程 HomePage:http://www.deeplearn ...

  5. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...

  6. Android Studio 更新同步Gradle错误解决方法

    1.在https://services.gradle.org/distributions/下载对应的gradle的zip包,对应方法见gradle-wrapper.properties文件中的: di ...

  7. Mac环境下PHP连接mysql提示Server sent charset (255) unknown和(HY000/2054)

    错误提示: mysqli_connect(): Server sent charset (255) unknown to the client. Please, report to the devel ...

  8. 基于Mono和VSCode打造轻量级跨平台IDE

      近期Visual Studio推出Mac版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...

  9. mysql 开发进阶篇系列 10 锁问题 (相同索引键值或同一行或间隙锁的冲突)

    1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...

  10. ITP项目:一期版本分享

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 写代码和练书法一样,要坚持.昨晚的提笔留下. 一.项目小结: 项目经历了 ...