第1部分 简单的扩展 1
第1章 jQuery扩展 1
1.1 jQuery的背景 3
1.1.1 起源 4
1.1.2 发展 5
1.1.3 现状 6
1.2 扩展jQuery 7
1.2.1 开发者可以扩展什么 7
1.3 扩展的示例 10
1.3.1 jQuery UI 10
1.3.2 验证 11
1.3.3 图形幻灯片 12
1.3.4 集成谷歌地图 13
1.3.5 Cookies 13
1.3.6 颜色动画 14
1.4 总结 14
第2章 第一个插件 16
2.1 jQuery的架构 16
2.1.1 jQuery的扩展点 18
2.1.2 选择器 19
2.1.3 集合插件 19
2.1.4 工具函数 20
2.1.5 jQuery UI小部件 20
2.1.6 jQuery UI特效 20
2.1.7 动画属性 21
2.1.8 Ajax处理 21
2.1.9 事件处理 22
2.1.10 验证规则 22
2.2 一个简单的插件 22
2.2.1 占位文字 23
2.2.2 水印插件的代码 23
2.2.3 清除水印 25
2.2.4 使用水印插件 25
2.3 总结 27
第3章 选择器和过滤器 28
3.1 什么是选择器和过滤器 29
3.1.1 为什么要添加新的选择器 29
3.1.2 基本选择器 29
3.1.3 伪类选择器 31
3.2 添加一个伪类选择器 33
3.2.1 一个伪类选择器的结构 34
3.2.2 添加一个精确内容匹配选择器 35
3.2.3 添加一个内容模式匹配选择器 37
3.2.4 添加元素类型选择器 38
3.2.5 添加一个外语选择器 39
3.2.6 “验证插件”中的选择器 40
3.3 添加一个集合过滤器 41
3.3.1 一个集合选择器的结构 41
3.3.2 添加一个中间元素集合选择器 42
3.3.3 增强索引选择器 44
3.4 总结 45
第2部分 插件和函数 49
第4章 插件开发原则 49
4.1 插件设计 49
4.1.1 插件的好处 50
4.1.2 规划设计 50
4.1.3 插件模块化 51
4.2 指导原则 52
4.2.1 提供渐进增强 52
4.2.2 在所有地方使用唯一的名字 52
4.2.3 把一切都放在jQuery对象中 53
4.2.4 不要依赖$与jQuery的等同性 53
4.2.5 利用作用域隐藏实现细节 54
4.2.6 用“方法”调用附加功能 55
4.2.7 尽可能返回jQuery对象以便链式调用 55
4.2.8 使用data函数来存储实例详细信息 56
4.2.9 预估定制点 56
4.2.10 使用合理的默认值 57
4.2.11 允许本地化/地方化 58
4.2.12 用CSS控制插件样式 59
4.2.13 在主流浏览器中测试 61
4.2.14 创建可重复的测试用例集 61
4.2.15 提供示例和文档 62
4.3 总结 64
第5章 集合插件 65
5.1 什么是集合插件 65
5.2 一个插件框架 66
5.2.1 MaxLength插件 66
5.2.2 MaxLength插件的操作 67
5.3 定义插件 68
5.3.1 声明一个命名空间 68
5.3.2 封装 69
5.3.3 使用单例 69
5.4 附加到元素 71
5.4.1 基本的附加 71
5.4.2 插件初始化 72
5.4.3 调用方法 73
5.4.4 取值方法 74
5.5 设置选项 76
5.5.1 插件默认值 76
5.5.2 本地化/地方化 77
5.5.3 响应选项的变化 79
5.5.4 实现MaxLength的选项 80
5.5.5 启用和禁用小部件 82
5.6 添加事件处理器 83
5.6.1 注册一个事件处理器 83
5.6.2 触发一个事件处理器 84
5.7 添加方法 84
5.8 移除插件 85
5.9 收尾工作 86
5.9.1 插件的主要部分 86
5.9.2 设置插件样式 88
5.10 完整的插件 89
5.11 总结 91
第6章 函数插件 92
6.1 定义插件 93
6.1.1 本地化插件 93
6.1.2 框架代码 94
6.1.3 加载本地化文件 94
6.2 jQuery Cookie插件 97
6.2.1 Cookie的交互 97
6.2.2 读写cookie 98
6.3 总结 100
第7章 插件的测试、打包和文档 102
7.1 测试插件 103
7.1.1 测试什么 103
7.1.2 使用QUnit 104
7.1.3 测试MaxLength插件 105
7.1.4 测试选项的设置和获取 108
7.1.5 模拟用户动作 109
7.1.6 测试事件回调 111
7.2 打包插件 112
7.2.1 整理所有文件 112
7.2.2 最小化插件 113
7.2.3 提供一个基本示例 116
7.3 为插件编写文档 118
7.3.1 选项文档 118
7.3.2 方法和工具函数的文档 119
7.3.3 演示插件的功能 120
7.4 总结 121
第3部分 扩展jQuery UI 125
第8章 jQuery UI小部件 125
8.1 小部件框架 126
8.1.1 jQuery UI的模块 126
8.1.2 小部件模块 128
8.1.3 MaxLength插件 128
8.1.4 MaxLength插件的操作 129
8.2 定义小部件 130
8.2.1 声明一个名字 130
8.2.2 封装插件 131
8.2.3 声明这个小部件 131
8.3 把插件附加到一个元素 133
8.4 处理插件选项 134
8.4.1 小部件默认值 134
8.4.2 响应选项变化 135
8.4.3 实现MaxLength的选项 137
8.4.4 启用和禁用小部件 140
8.5 添加事件处理器 140
8.5.1 注册一个事件处理器 140
8.5.2 触发一个事件处理器 141
8.6 添加方法 142
8.7 移除小部件 143
8.8 收尾 145
8.8.1 小部件主体 145
8.8.2 设置小部件样式 147
8.9 完整的插件 148
8.10 总结 150
第9章 jQuery UI的鼠标交互 151
9.1 jQuery UI Mouse(鼠标)模块 151
9.1.1 鼠标拖动操作 152
9.1.2 鼠标选项 153
9.2 定义小部件 153
9.2.1 签名功能 153
9.2.2 Signature插件的操作 154
9.2.3 声明这个小部件 156
9.3 把插件附加到一个元素上 157
9.3.1 框架初始化 157
9.3.2 自定义初始化 157
9.4 处理插件选项 159
9.4.1 小部件默认值 159
9.4.2 设置选项 161
9.4.3 实现Signature选项 162
9.4.4 启用和禁用小部件 162
9.5 添加事件处理器 163
9.5.1 注册一个事件处理器 163
9.5.2 触发一个事件处理器 164
9.6 与鼠标交互 164
9.6.1 是否可以开始一个拖动 165
9.6.2 开始一个拖动 165
9.6.3 跟踪一个拖动 166
9.6.4 结束一个拖动 166
9.7 添加方法 167
9.7.1 清除签名 167
9.7.2 转换为JSON 168
9.7.3 重新绘制签名 169
9.7.4 检查签名是否存在 170
9.8 移除小部件 171
9.9 完整的插件 172
9.10 总结 173
第10章 jQuery UI特效 174
10.1 jQuery UI特效框架 175
10.1.1 Effects Core模块 175
10.1.2 公共特效函数 176
10.1.3 已有特效 178
10.2 添加一个新特效 180
10.2.1 内爆一个元素 180
10.2.2 初始化特效 181
10.2.3 实现特效 183
10.2.4 在iQuery UI 1.9 之前实现特效 184
10.2.5 完整的特效 185
10.3 缓动动画 185
10.3.1 什么是缓动 185
10.3.2 已有的缓动 187
10.3.3 添加一个新缓动 189
10.4 总结 191
第4部分 其他扩展 195
第11章 属性的动画 195
11.1 动画框架 196
11.1.1 动画功能 196
11.1.2 步进一个动画 198
11.2 添加一个自定义属性的动画 200
11.2.1 background-position的动画 200
11.2.2 声明和获取这个属性值 201
11.2.3 更新属性值 203
11.2.4 background-position在jQuery 1.7 中的动画 204
11.2.5 完整的插件 205
11.3 总结 206
第12章 扩展Ajax 207
12.1 Ajax框架 208
12.1.1 预过滤器 209
12.1.2 传输器 209
12.1.3 转换器 210
12.2 添加一个Ajax预过滤器 210
12.2.1 改变数据类型 211
12.2.2 禁用Ajax处理 211
12.3 添加一个Ajax传输器 212
12.3.1 加载图像数据 212
12.3.2 为测试模拟HTML数据 214
12.4 添加一个Ajax转换器 217
12.4.1 逗号分隔值(CSV)格式 217
12.4.2 把文本转换为CSV 218
12.4.3 把CSV转换为表格 220
12.5 Ajax插件 222
12.6 总结 222
第13章 扩展事件 224
13.1 特殊事件框架 225
13.1.1 绑定事件处理器 225
13.1.2 触发事件 226
13.2 添加一个特殊事件 227
13.2.1 添加一个右键单击事件 227
13.2.2 禁用右击事件 229
13.2.3 多个右击事件 230
13.2.4 事件的集合函数 233
13.3 增强一个已有事件 234
13.4 事件的其他功能 236
13.4.1 事件的默认动作 236
13.4.2 派发前和派发后回调 237
13.4.3 阻止事件冒泡 238
13.4.4 自动绑定和代理 238
13.5 总结 239
第14章 创建验证规则 241
14.1 Validation插件 242
14.2 添加一个验证规则 244
14.2.1 添加一个模式匹配规则 245
14.2.2 生成模式匹配规则 247
14.3 添加一个多字段验证规则 248
14.3.1 分组验证 249
14.3.2 定义一个多字段规则 249
14.4 总结 251
附录A 正则表达式 253
词汇表 261