获得徽章 10
- 鼠标经过事件的区别:
mouseover 和 mouseout 会有冒泡效果
mouseenter 和 mouseleave 没有冒泡效果 (推荐)
两种注册事件的区别:
(1)传统on注册(L0)
①同一个对象,后面注册的事件会覆盖前面注册的事件(同一个事件)
②直接使用null覆盖就可以实现事件的解绑
③都是冒泡阶段执行的
(2)事件监听注册(L2)
①语法:addEventListener(事件类型,事件处理函数,是否使用捕获机制)
②后面注册的事件不会覆盖前面注册的事件(同一个事件)
③可以通过第三个参数去确定是在冒泡还是捕获阶段执行
④必须使用removeEventListener(事件类型,事件处理函数,获取捕获或者冒泡阶段)
⑤匿名函数无法解绑
事件委托(委托给父元素)
如果同时给多个元素注册事件,可以用for循环注册事件,但是使用事件委托只需注册一次事件就能完成以上效果
事件委托中的this 和 e.target 不一定指向一个对象,this指向的是调用者,而e.target是触发的对象,不能随意更换
优点:减少注册次数,提高程序性能
原理:
利用事件冒泡的特点
给父元素注册事件,当触发子元素时,会冒泡到父元素身上,从而触发父元素的事件
实现:
事件对象)e.target.tagName === '大写的元素 '
可以获得真正被触发的事件元素展开评论4