因为写随笔时,已经学习并大量使用过JS事件以及事件监听函数,所以不会事无巨细地举例子浏览器
事件,便可被JavaScript侦测到的行为函数
也就是用户和页面交互时,解释器会建立的响应event对象,描述事件的信息学习
事件发生时执行的代码,用一个函数包裹起来对象
即在DOM元素后加上事件类型以及事件处理函数事件
DOM0级事件中,一个元素只能够添加一个事件和一个句柄,若是绑定多个则以最后一个绑定的事件和句柄为准ip
在DOM元素后加上addEventListener方法,第一个参数为事件类型,第二个参数为事件句柄,第三个参数为事件冒泡/捕获(布尔值,默认为false(冒泡))rem
能够给一个元素添加屡次addEventListener,从而绑定多个事件类型和事件句柄get
也能够给元素使用removeEventListener方法,移除DOM事件,三个参数同addEventListener一致,但须要注意绑定事件时,事件句柄不可为匿名函数(不然没法识别要解绑哪一个句柄)event
IE中事件的绑定用attachEvent,第一个参数为事件类型(加上on,例如click变成onclick),第二个为事件句柄匿名函数
移除事件用detachEvent,两个参数同attachEvent,可是事件句柄必须不能为匿名函数
结合以上,能够经过判断是否有addEventListener/removeEventListener方法,来封装一个跨浏览器的事件处理函数
HTML里,元素之间会存在亲子关系,当子一级元素绑定事件时,若是父级元素也绑定了同类型的事件,则子元素触发事件时,父元素事件也会被触发
也就是说,事件触发后,会沿着DOM树往上找,若是直系父元素也有同类型事件则触发,即为事件冒泡
同事件冒泡相反,当父元素绑定事件时,若是子一级元素也绑定了同类型的事件,则父元素触发事件时,子一级元素事件也会被触发
事件委托利用了事件冒泡的原理,在父元素上绑定须要触发的事件类型以及事件句柄,当子元素触发同类型事件时,父元素就会被触发并执行事件句柄
这样一来减小了事件绑定的次数,也缩减了代码量
在给DOM元素添加事件时,会生成一个event对象,其带有众多属性和方法
type:返回当前绑定事件的类型(click等),能够在同一DOM对象上绑定同一事件句柄,在事件句柄中判断事件类型并做出不一样处理
target/currentTarget:返回触发事件的对象/绑定事件的对象,例如父元素绑定事件时,点击子元素,target返回子元素,currentTarget返回父元素
(未完待续)