
js事件
发布日期:2021-05-06 20:27:01
浏览次数:17
分类:精选文章
本文共 995 字,大约阅读时间需要 3 分钟。
事件处理是网页开发中的核心功能之一,它决定了用户与网页之间的互动方式。理解事件的概念及其处理机制,对于构建良好的用户交互体验至关重要。
在解除事件处理程序时,需要注意以下几点:
移除事件监听
- 使用
ele.onclick = false
或ele.onclick = null
- 调用
ele.removeEventListener('click', fn, false)
(IE兼容)或ele.removeEventListener('click', fn)
(现代浏览器) - 或者使用
ele.detachEvent('onclick', fn)
(IE专用)
注意匿名函数的处理
- 如果事件处理函数是匿名函数,无法通过
removeEventListener
或detachEvent
完成解除
事件传播机制分为冒泡和捕获两种模式:
-
事件冒泡
- 事件从子元素向上(从嵌套更深的元素向父元素传播)
- 事件传播路径:子元素 → 父元素
- 示例:点击一个嵌套在 anchor 标签内的 span 元素,点击事件会依次冒泡至 span、a、body 等元素
-
事件捕获
- 事件从父元素向下(从嵌套更浅的元素传向子元素)
- 事件传播路径:父元素 → 子元素
- 注意:IE 不支持事件捕获
事件传播顺序通常为:捕获 → 冒泡
默认情况下,事件冒泡传播是无法阻止的,但可以通过 W3C 标准event.stopPropagation()
或 IE 专用的 event.cancelBubble = true
来取消冒泡 以下事件类型通常会冒泡:
focus
blur
change
submit
reset
select
为了阻止默认事件,可以采取以下措施:
返回值方式
- 使用
return false
来阻止默认事件(仅适用于通过onclick
属性注册的事件)
W3C 标准方式
- 调用
event.preventDefault()
(所有现代浏览器支持)
IE 兼容方式
- 使用
event.returnValue = false
(IE9 及更早版本支持)
封装一个通用的阻止默认事件函数:
function cancelDefault(event) { event.preventDefault(); return false;}
通过以上方法,可以有效控制事件的传播和默认行为,提升用户体验。