JS中事件和函数的区别?

JavaScript025

JS中事件和函数的区别?,第1张

事件是在特定条件下触发的行为,函数则是实现特定功能的行为的具体的体现。比如你在人格受到侮辱时你会愤怒,那么“当愤怒时”就是事件,而你愤怒的时候会具体做什么,也就是你对这个事件的具体反映,由函数来完成;比如你愤怒时会打架(fighting),那么打架就是函数。

在各种浏览器中存在三种事件模型:原始事件模型,DOM2事件模型,IE事件模型。

其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持.

原始事件模型:

在原始事件模型中(也有说DOM0级),事件发生后没有传播的概念,没有事件流。北大青鸟http://www.kmbdqn.cn/认为事件发生,处理,结束,就这么简单。监听函数只是元素的一个属性值,通过指定元素的属性值来绑定监听器。书写方式有两种:

(1)HTML代码中指定属性值:

(2)在js代码中指定属性值:document.getElementsByTagName(‘input’)[0].onclick=func

优点:所有浏览器都兼容

缺点:

1.逻辑与显示没有分离

2.相同事件的监听函数只能绑定一个,后绑定的会覆盖掉前面的

3.无法通过事件的冒泡、委托等机制。

DOM2事件模型

此模型是W3C制定的标准模型。W3C制定的事件模型中,一次事件的发生包含三个过程:

(1)事件捕获阶段。事件被从document一直向下传播到目标元素,在这过程中依次检查经过的节点是否注册了该事件的监听函数,若有则执行。

(2)事件处理阶段。事件到达目标元素,执行目标元素的事件处理函数.

(3)事件冒泡阶段。事件从目标元素上升一直到达document,同样依次检查经过的节点是否注册了该事件的监听函数,有则执行。

所有的事件类型都会经历"事件捕获阶段"但是只有部分事件会经历"事件冒泡阶段"阶段,例如submit事件就不会被冒泡。

e.target与e.currentTarget是干什么的?

e.target获取当前实际触发事件节点,e.currentTarget获取获取当前监听节点。

11111

$('div').on('click',function(e){console.log(e.currentTarget)console.log(e.target)})

如果点击span的输出:

li对象

span对象

点击li的非span区域,输出

li对象

li对象

preventDefault与stopPropagation是干什么的

事件:

是js中特有的东西。js就是基于事件驱动的一门语言。

想一下js的实现,都(大多数)是通过用户与浏览器的交互,比如你点击某个控件,鼠标放上,ajax请求等等,你的这些操作其实都是触发了js中定义的具体的事件,你可以给具体的事件绑定处理事件的函数。

我们常用的事件有:click,mouseover,mouseout等等。

事件属性:

表示的是具体的事件的一些特性,这些属性是让你更好的去控制这个事件,比如点击事件有属性可以判断点击的位置,点击时候是不是按下了哪个键盘按键,点击是鼠标左键还是鼠标右键。

关于事件的一些知识,强烈建议你去看下《javascript权威指南》,里面对事件,事件属性,事件目标,事件触发等等各种含义都解释的相当到位,相信你看了一定有帮助。

同时很希望帮到你,看到下面专家的回答,我压力还是蛮大的,真心希望我的回答能解决你的问题。