
jQuery-1.9.1源码分析:事件包装与上下文环境
137KB |
更新于2024-08-30
| 197 浏览量 | 举报
收藏
"jQuery-1.9.1源码分析系列——事件系统之事件包装"
在深入探讨jQuery-1.9.1事件系统的事件包装时,我们首先要理解浏览器的原生事件模型及其局限性。原生事件对象是只读的,这使得jQuery无法直接修改它们以实现特定功能,例如在事件委托或上下文管理中。因此,jQuery选择创建自定义的事件对象,以扩展和增强原生事件的功能。
事件委托是一个常见的JavaScript编程技巧,它允许我们为父元素绑定一个事件处理器,以便处理子元素的事件。在这个场景中,假设我们有元素a和b,a是b的父元素,我们希望在点击a时触发fn函数。当点击事件冒泡到b时,我们需要确保fn在a的上下文中执行,而不是b的。为了实现这一点,jQuery在源码中使用了`apply`方法来改变函数的执行上下文。
这段代码展示了jQuery如何处理事件处理程序的执行:
```javascript
ret = ( (jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem,args);
```
这里,`apply`方法被用来改变函数执行的`this`值(即上下文),使其指向匹配的元素`matched.elem`(在这里是元素a)。同时,`args[0]`代表事件对象event,这样可以确保事件处理函数接收正确的事件对象。
为了确保事件对象的`currentTarget`属性反映实际的事件源(在这种情况下是元素a),jQuery在调用`apply`之前会修改`event.currentTarget`:
```javascript
event.currentTarget = matched.elem;
```
jQuery事件系统区分了不同类型事件,如鼠标事件和键盘事件。对于这些事件,jQuery维护了三个关键属性集合:
1. 鼠标和键盘事件共享的属性,存储在`jQuery.event.props`中,包括`altKey`, `bubbles`, `cancelable`, `ctrlKey`, `currentTarget`, `eventPhase`, `metaKey`, `relatedTarget`, `shiftKey`, `target`, `timeStamp`, `view`, 和 `which`等。
2. 键盘事件独有的属性,定义在`jQuery.event.keyHooks.props`里,包括`char`, `charCode`, `key`, 和 `keyCode`。
3. 鼠标事件特有的属性,存于`jQuery.event.mouseHooks.props`,包含`button`, `buttons`, `clientX`, `clientY`, `offsetX`, `offsetY`, `pageX`, `pageY`, `screenX`, `screenY`, 和 `which`等。
这些属性集合允许jQuery在处理事件时,根据事件类型适当地填充和扩展事件对象,提供与原生事件兼容但更强大的功能。通过这样的事件包装,jQuery能够提供更灵活、一致且跨浏览器的事件处理机制,使得开发者在处理DOM交互时更加便捷。
相关推荐










weixin_38626192
- 粉丝: 4
最新资源
- VC++中Win32静态DLL调用的实例解析
- 电子变压器设计指南与编程实践
- SmallMath:基于Java的开源语言实现及特性解析
- PHPMailer v2.0: 强大的电子邮件发送PHP类库
- C#实现的模板方法模式DEMO实例解析
- DXperience 8.1.1 源码包 - 7z压缩文件解压缩指南
- 探索Delphi编程世界:附带完整源码的深入指南
- C# 图型控件:曲线与柱状图展示
- S3C2440 LED驱动源码详解与学习指南
- Delphi邮件服务器源码深度解析与应用
- C# 常用编程范例精选10例
- Digester在Java中解析XML文件的方法与应用
- s3c2440按键驱动源码解析与学习指南
- 2KB极简时钟——资源占用极小的Flash小作品
- 掌握.NET框架:C#实验答案详解
- ExpressDBTree Suite 1.34 发布 - VCL组件导航/布局解决方案
- ARM单片机汇编语言学习教程
- Java IT认证题库:全面覆盖语言基础与应用模拟题
- Windows下的强大引导工具grub4dos
- 掌握GridView中的CheckBox单选与多选技巧
- VB实现系统功能对话框调用技巧
- 网络与路由技术全面教程资料包
- 深入浅出HTML、CSS与XML开发指南
- 数据库原理与应用的全面介绍及实例应用