JS事件

  因为写随笔时,已经学习并大量使用过JS事件以及事件监听函数,所以不会事无巨细地举例子浏览器

 

定义

事件

  事件,便可被JavaScript侦测到的行为函数

  也就是用户和页面交互时,解释器会建立的响应event对象,描述事件的信息学习

句柄

  事件发生时执行的代码,用一个函数包裹起来对象

 

类型

DOM0级事件

  即在DOM元素后加上事件类型以及事件处理函数事件

  DOM0级事件中,一个元素只能够添加一个事件一个句柄,若是绑定多个则以最后一个绑定的事件和句柄为准ip

DOM2级事件

  在DOM元素后加上addEventListener方法,第一个参数为事件类型,第二个参数为事件句柄,第三个参数为事件冒泡/捕获(布尔值,默认为false(冒泡))rem

  能够给一个元素添加屡次addEventListener,从而绑定多个事件类型和事件句柄get

  也能够给元素使用removeEventListener方法,移除DOM事件,三个参数同addEventListener一致,但须要注意绑定事件时,事件句柄不可为匿名函数(不然没法识别要解绑哪一个句柄)event

IE的事件处理

  IE中事件的绑定用attachEvent,第一个参数为事件类型(加上on,例如click变成onclick),第二个为事件句柄匿名函数

  移除事件用detachEvent,两个参数同attachEvent,可是事件句柄必须不能为匿名函数

 

结合以上,能够经过判断是否有addEventListener/removeEventListener方法,来封装一个跨浏览器的事件处理函数

 

事件冒泡&捕获

事件冒泡

  HTML里,元素之间会存在亲子关系,当子一级元素绑定事件时,若是父级元素也绑定了同类型的事件,则子元素触发事件时,父元素事件也会被触发

  也就是说,事件触发后,会沿着DOM树往上找,若是直系父元素也有同类型事件则触发,即为事件冒泡

事件捕获

  同事件冒泡相反,当父元素绑定事件时,若是子一级元素也绑定了同类型的事件,则父元素触发事件时,子一级元素事件也会被触发

事件委托

  事件委托利用了事件冒泡的原理,在父元素上绑定须要触发的事件类型以及事件句柄,当子元素触发同类型事件时,父元素就会被触发并执行事件句柄

  这样一来减小了事件绑定的次数,也缩减了代码量

 

Event对象

  在给DOM元素添加事件时,会生成一个event对象,其带有众多属性和方法

属性

  type:返回当前绑定事件的类型(click等),能够在同一DOM对象上绑定同一事件句柄,在事件句柄中判断事件类型并做出不一样处理

  target/currentTarget:返回触发事件的对象/绑定事件的对象,例如父元素绑定事件时,点击子元素,target返回子元素,currentTarget返回父元素

(未完待续)

相关文章
相关标签/搜索