O'reilly动物书,程序员的技术乐园(套装共9册)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-05 23:46:24

点击下载

作者:[美]Eric Sammer 著

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

O'reilly动物书,程序员的技术乐园(套装共9册)

O'reilly动物书,程序员的技术乐园(套装共9册)试读:

前言

本书读者对象

你将会学习到的内容

jQuery风格和惯例

其他选择

如果运行示例时遇到问题

如果你喜欢(或者不喜欢)本书

本书约定

代码示例的使用

Safari 联机丛书

如何联络我们

第1章 jQuery基础

1.0 导言

1.0.1 为什么使用jQuery

1.0.2 jQuery原则

1.0.3 jQuery API的组织方式

1.1 在HTML页面中包含jQuery程序库代码

1.1.1 问题

1.1.2 解决方案

1.1.3 讨论

1.2 在DOM加载之后、整个页面加载之前执行jQuery/JavaScript代码

1.2.1 问题

1.2.2 解决方案

1.2.3 讨论

1.3 用选择器和jQuery函数选择DOM元素

1.3.1 问题

1.3.2 解决方案

1.3.3 讨论

1.4 在指定上下文中选择DOM元素

1.4.1 问题

1.4.2 解决方案

1.4.3 讨论

1.5 过滤DOM元素包装器集

1.5.1 问题

1.5.2 解决方案

1.5.3 讨论

1.6 查找当前选择包装器集中的后代元素

1.6.1 问题

1.6.2 解决方案

1.6.3 讨论

1.7 返回破坏性修改之前的选择

1.7.1 问题

1.7.2 解决方案

1.7.3 讨论

1.8 将前一个选择集包含到当前选择集

1.8.1 问题

1.8.2 解决方案

1.8.3 讨论

1.9 根据当前上下文遍历DOM获得新的DOM元素集

1.9.1 问题

1.9.2 解决方案

1.9.3 讨论

1.10 创建、操作和插入DOM元素

1.10.1 问题

1.10.2 解决方案

1.10.3 讨论

1.11 删除DOM元素

1.11.1 问题

1.11.2 解决方案

1.11.3 讨论

1.12 替换DOM元素

1.12.1 问题

1.12.2 解决方案

1.12.3 讨论

1.13 克隆DOM元素

1.13.1 问题

1.13.2 解决方案

1.13.3 讨论

1.14 获取、设置和删除DOM元素属性

1.14.1 问题

1.14.2 解决方案

1.14.3 讨论

1.15 获取和设置HTML内容

1.15.1 问题

1.15.2 解决方案

1.15.3 讨论

1.16 获取和设置文本内容

1.16.1 问题

1.16.2 解决方案

1.16.3 讨论

1.17 在不造成全局冲突的情况下使用$别名

1.17.1 问题

1.17.2 解决方案

1.17.3 讨论

第2章 用jQuery 选择元素

2.0 导言

2.1 仅选择子元素

2.1.1 问题

2.1.2 解决方案

2.1.3 讨论

2.2 选择特定的兄弟元素

2.2.1 问题

2.2.2 解决方案

2.2.3 讨论

2.3 按照索引顺序选择元素

2.3.1 问题

2.3.2 解决方案

2.3.3 讨论

2.4 选择当前动画元素

2.4.1 问题

2.4.2 解决方案

2.4.3 讨论

2.5 根据包含的内容选择元素

2.5.1 问题

2.5.2 解决方案

2.5.3 讨论

2.6 选择不匹配的元素

2.6.1 问题

2.6.2 解决方案

2.6.3 讨论

2.7 根据可见性选择元素

2.7.1 问题

2.7.2 解决方案

2.7.3 讨论

2.8 根据属性选择元素

2.8.1 问题

2.8.2 解决方案

2.8.3 讨论

2.9 按照类型选择表单元素

2.9.1 问题

2.9.2 解决方案

2.9.3 讨论

2.10 选择有具体特性的元素

2.10.1 问题

2.10.2 解决方案

2.10.3 讨论

2.11 使用上下文参数

2.11.1 问题

2.11.2 解决方案

2.11.3 讨论

2.12 创建一个子定义过滤器选择器

2.12.1 问题

2.12.2 解决方案

2.12.3 讨论

第3章 超越基础

3.0 导言

3.1 循环读取选择结果集合

3.1.1 问题

3.1.2 解决方案

3.1.3 讨论

3.2 将选择集缩减为某个特定项

3.2.1 问题

3.2.2 解决方案

3.2.3 讨论

3.3 将选中的jQuery对象转换为原始DOM对象

3.3.1 问题

3.3.2 解决方案

3.3.3 讨论

3.4 获得选择集中某个元素的索引

3.4.1 问题

3.4.2 解决方案

3.4.3 讨论

3.5 从现有数组中建立独特的数组

3.5.1 问题

3.5.2 解决方案

3.5.3 讨论

3.6 在选择集合的子集上执行某项操作

3.6.1 问题

3.6.2 解决方案

3.6.3 讨论

3.7 配置jQuery,避免与其他程序库冲突

3.7.1 问题

3.7.2 解决方案

3.7.3 讨论

3.8 用插件增加功能

3.8.1 问题

3.8.2 解决方案

3.8.3 讨论

3.9 确定使用的到底是哪一个查询

3.9.1 问题

3.9.2 解决方案

3.9.3 讨论

第4章 jQuery工具

4.0 导言

4.1 用jQuery.suppoert检测功能

4.1.1 问题

4.1.2 解决方案

4.1.3 讨论

4.2 用jQuery.each循环读取数组和对象

4.2.1 问题

4.2.2 解决方案

4.2.3 讨论

4.3 用jQuery.grep过滤数组

4.3.1 问题

4.3.2 解决方案

4.3.3 讨论

4.4 用jQuery.map循环修改数组元素

4.4.1 问题

4.4.2 解决方案

4.4.3 讨论

4.5 用jQuery.merge合并两个数组

4.5.1 问题

4.5.2 解决方案

4.5.3 讨论

4.6 用jQuery.unique过滤重复的数组元素

4.6.1 问题

4.6.2 解决方案

4.6.3 讨论

4.7 用jQuery.isFunction测试回调函数

4.7.1 问题

4.7.2 解决方案

4.7.3 讨论

4.8 用jQuery.trim从字符串或者表单值中删除空格

4.8.1 问题

4.8.2 解决方案

4.8.3 讨论

4.9 用jQuery.data将对象和数据附加到DOM中

4.9.1 问题

4.9.2 解决方案

4.9.3 讨论

4.10 用jQuery.extend扩展对象

4.10.1 问题

4.10.2 解决方案

4.10.3 讨论

第5章 更快、更简单、更有趣

5.0 引言

5.1 这不是jQuery,而是JavaScript

5.1.1 问题

5.1.2 解决方案

5.1.3 讨论

5.2 $(this)出了什么问题

5.2.1 问题

5.2.2 解决方案

5.2.3 讨论

5.3 删除多余的重复

5.3.1 问题

5.3.2 解决方案1

5.3.3 解决方案2

5.3.4 讨论

5.4 格式化jQuery链

5.4.1 问题

5.4.2 解决方案

5.4.3 讨论

5.5 从其他程序库借用代码

5.5.1 问题

5.5.2 解决方案

5.5.3 讨论

5.6 编写自定义迭代器

5.6.1 问题

5.6.2 解决方案

5.6.3 讨论

5.7 切换属性

5.7.1 问题

5.7.2 解决方案

5.7.3 讨论

5.8 寻找瓶颈

5.8.1 问题

5.8.2 解决方案

5.8.3 讨论

5.9 缓存jQuery对象

5.9.1 问题

5.9.2 解决方案

5.9.3 讨论

5.10 编写更快的选择器

5.10.1 问题

5.10.2 解决方案

5.10.3 讨论

5.11 更快地加载表格

5.11.1 问题

5.11.2 解决方案

5.11.3 讨论

5.12 编写基本的循环代码

5.12.1 问题

5.12.2 解决方案

5.12.3 讨论

5.13 减少名称查找

5.13.1 问题

5.13.2 解决方案

5.13.3 讨论

5.14 用.innerHTML更快地更新DOM

5.14.1 问题

5.14.2 解决方案

5.14.3 讨论

5.15 分解方法链

5.15.1 问题

5.15.2 解决方案

5.15.3 讨论

5.16 这是jQuery的缺陷吗

5.16.1 问题

5.16.2 解决方案

5.16.3 讨论

5.17 跟踪jQuery

5.17.1 问题1

5.17.2 解决方案1

5.17.3 问题2

5.17.4 解决方案2

5.17.5 讨论

5.18 减少服务器请求的数量

5.18.1 问题

5.18.2 解决方案

5.18.3 讨论

5.19 编写无干扰式的JavaScript

5.19.1 问题

5.19.3 讨论

5.20 将jQuery用于渐进增强

5.20.1 问题

5.20.2 解决方案

5.20.3 讨论

5.21 使页面易于访问

5.21.1 问题

5.21.2 解决方案

5.21.3 讨论

第6章 尺寸

6.0 引言

6.1 求取窗口和文档的尺寸

6.1.1 问题

6.1.2 解决方案

6.1.3 讨论

6.2 求取元素的尺寸

6.2.1 问题

6.2.2 解决方案

6.2.3 讨论

6.3 求取元素的偏移量

6.3.1 问题

6.3.2 解决方案

6.3.3 讨论

6.4 滚动元素使其可见

6.4.1 问题

6.4.2 解决方案:滚动整个窗口

6.4.3 解决方案:在一个元素中滚动

6.5 确定元素是否在视区内

6.5.1 问题

6.5.2 解决方案

6.6 将元素放在视区的中央

6.6.1 元素

6.6.2 解决方案

6.7 在当前位置绝对定位一个元素

6.7.1 问题

6.7.2 解决方案

6.8 按照与另一个元素的相对位置定位元素

6.8.1 问题

6.8.2 解决方案

6.9 根据浏览器宽度切换样式表

6.9.1 问题

6.9.2 解决方案

6.9.3 解决方案1:修改正文元素的类

6.9.4 解决方案2:修改负责设置与尺寸相关样式的样式表的href属性

6.9.5 解决方案3:在页面中包含所有与尺寸相关的样式表,但一次只启用一个

6.9.6 讨论

第7章 特效

7.0 导言

7.0.1 动画方法

7.0.2 动画速度

7.0.3 特效模板

7.1 滑动和淡入/淡出元素

7.1.1 问题

7.1.2 解决方案

7.1.3 讨论

7.2 通过向上滑动使元素可见

7.2.1 问题

7.2.2 解决方案

7.2.3 讨论

7.3 创建水平折叠特效

7.3.1 问题

7.3.2 解决方案

7.3.3 讨论

7.4 同时滑动和淡入/淡出元素

7.4.1 解决方案

7.4.2 讨论

7.5 应用连续的特效

7.5.1 问题

7.5.2 解决方案

7.5.3 讨论

7.6 确定元素目前是否处于动画中

7.6.1 问题

7.6.2 解决方案

7.6.3 讨论

7.7 停止和复位动画

7.7.1 问题

7.7.2 解决方案

7.7.3 讨论

7.8 为特效使用自定义的缓动方法

7.8.1 问题

7.8.2 解决方案

7.8.3 讨论

7.9 禁用所有特效

7.9.1 问题

7.9.2 解决方案

7.9.3 讨论

7.10 将jQuery UI用于高级特效

7.10.1 问题

7.10.2 解决方案

7.10.3 讨论

第8章 事件

8.0 导言

8.1 将一个事件处理程序用于许多事件

8.1.1 问题

8.1.2 解决方案

8.1.3 讨论

8.2 对不同的数据重用处理程序函数

8.2.1 问题

8.2.2 解决方案

8.2.3 讨论

8.3 删除整组事件处理程序

8.3.1 问题

8.3.2 解决方案

8.3.3 讨论

8.4 触发特定事件处理程序

8.4.1 问题

8.4.2 解决方案

8.4.3 讨论

8.5 向事件处理程序传递动态数据

8.5.1 问题

8.5.2 解决方案

8.5.3 讨论

8.6 尽早访问元素(在document.ready之前)

8.6.1 问题

8.6.2 解决方案

8.6.3 讨论

8.7 停止处理程序执行循环

8.7.1 问题

8.7.2 解决方案

8.7.3 讨论

8.8 在使用event.target时获取正确的元素

8.8.1 问题

8.8.2 解决方案

8.8.3 讨论

8.9 避免多个hover()动画并行显示

8.9.1 问题

8.9.2 解决方案

8.9.3 讨论

8.10 使事件处理程序适用于新添加的元素

8.10.1 问题

8.10.2 解决方案

8.10.3 讨论

第9章 高级事件

9.0 导言

9.1 在动态加载时运行jQuery

9.1.1 问题

9.1.2 解决方案

9.1.3 讨论

9.2 加速全局事件触发

9.2.1 问题

9.2.2 解决方案

9.2.3 讨论

9.3 创建自己的事件

9.3.1 问题

9.3.2 解决方案

9.3.3 讨论

9.4 让事件处理程序提供需要的数据

9.4.1 问题

9.4.2 解决方案

9.4.3 讨论

9.5 创建事件驱动插件

9.5.1 问题

9.5.2 解决方案

9.5.3 讨论

9.6 在调用jQuery方法时得到通知

9.6.1 问题

9.6.2 解决方案

9.6.3 讨论

9.7 将对象方法作为事件监听器使用

9.7.1 问题

9.7.2 解决方案

9.7.3 讨论

第10章 从头开始增强HTML表单

10.0 导言

10.1 在页面加载时将焦点放在一个文本输入字段上

10.1.1 问题

10.1.2 解决方案

10.1.3 讨论

10.2 禁用和启用表单元素

10.2.1 问题

10.2.2 解决方案1

10.2.3 解决方案2

10.2.4 讨论

10.3 自动选择单选按钮

10.3.1 问题

10.3.2 解决方案1

10.3.3 解决方案2

10.3.4 讨论

10.4 用专用的链接选择(反选)所有复选框

10.4.1 问题

10.4.2 解决方案

10.4.3 讨论

10.5 用一个切换开关选中(反选)所有复选框

10.5.1 问题

10.5.2 解决方案

10.5.3 讨论

10.6 添加和删除Select元素中的选项

10.6.1 问题

10.6.2 解决方案

10.6.3 讨论

10.7 根据字符计数自动跳到下一个控件

10.7.1 问题

10.7.2 解决方案

10.7.3 讨论

10.8 显示剩余字符串计数

10.8.1 问题

10.8.2 解决方案

10.8.3 讨论

10.9 限制文本输入字段内容为特定的字符

10.9.1 问题

10.9.2 解决方案

10.9.3 讨论

10.10 用Ajax提交表单

10.10.1 问题

10.10.2 解决方案

10.10.3 讨论

10.11 验证表单

10.11.1 问题

10.11.2 解决方案

10.11.3 讨论

第11章 用插件增强HTML表单

11.0 导言

11.0.1 基本方法

11.1 验证表单

11.1.1 问题

11.1.2 解决方案

11.1.3 讨论

11.2 创建固定格式的输入字段

11.2.1 问题

11.2.2 解决方案

11.2.3 讨论

11.3 自动补全文本字段

11.3.1 问题

11.3.2 解决方案

11.3.3 讨论

11.4 选择一个取值范围

11.4.1 问题

11.4.2 解决方案

11.4.3 讨论

11.5 输入范围约束值

11.5.1 问题

11.5.2 解决方案

11.5.3 讨论

11.6 在后台上传文件

11.6.1 问题

11.6.2 解决方案

11.6.3 讨论

11.7 限制输入文本的长度

11.7.1 问题

11.7.2 解决方案

11.7.3 讨论

11.8 在输入字段上方显示标签

11.8.1 问题

11.8.2 解决方案

11.8.3 讨论

11.9 根据内容增大输入字段

11.9.1 问题

11.9.2 解决方案

11.9.3 讨论

11.10 选择日期

11.10.1 问题

11.10.2 解决方案

11.10.3 讨论

11.10.4 本地化

第12章 jQuery插件

12.0 导言

12.1 从哪里寻找jQuery插件

12.1.1 问题

12.1.2 解决方案

12.1.3 讨论

12.2 何时应该编写一个jQuery插件

12.2.1 问题

12.2.2 解决方案

12.2.3 讨论

12.3 编写第一个jQuery插件

12.3.1 问题

12.3.2 解决方案

12.3.3 讨论

12.4 向插件传递选项

12.4.1 问题

12.4.2 解决方案

12.4.3 讨论

12.5 在插件中使用$快捷方式

12.5.1 问题

12.5.2 解决方案

12.5.3 讨论

12.6 在插件中包含私有函数

12.6.1 问题

12.6.2 解决方案

12.6.3 讨论

12.7 支持元数据插件

12.7.1 问题

12.7.2 解决方案

12.7.3 讨论

12.8 为插件添加静态函数

12.8.1 问题

12.8.2 解决方案

12.8.3 讨论

12.9 用Qunit对插件进行单元测试

12.9.1 问题

12.9.2 解决方案

12.9.3 讨论

第13章 从头开始创建界面组件

13.0 导言

13.1 创建自定义工具提示

13.1.1 问题

13.1.2 解决方案

13.1.3 讨论

13.2 使用文件树扩展器导航

13.2.1 问题

13.2.2 解决方案

13.2.3 讨论

13.3 展开折叠控件

13.3.1 问题

13.3.2 解决方案

13.3.3 讨论

13.4 选择文档中的不同选项卡

13.4.1 问题

13.4.2 解决方案

13.4.3 讨论

13.5 显示简单的模态窗口

13.5.1 问题

13.5.2 解决方案

13.5.3 讨论

13.6 构建下拉菜单

13.6.1 问题

13.6.2 解决方案

13.6.3 讨论

13.7 交叉消隐的循环图像

13.7.1 问题

13.7.2 解决方案

13.7.3 讨论

13.8 滑动面板

13.8.1 问题

13.8.2 解决方案

13.8.3 讨论

第14章 使用jQuery UI构建用户界面

14.0 导言

14.0.1 交互

14.0.2 窗口组件

14.0.3 特效

14.0.4 基本用法

14.0.5 本章组织结构

14.1 包含整个jQuery UI套件

14.1.1 问题

14.1.2 解决方案

14.1.3 讨论

14.2 包含单独的一两个jQuery UI插件

14.2.1 问题

14.2.2 解决方案

14.2.3 讨论

14.3 用默认选项初始化jQuery UI插件

14.3.1 问题

14.3.2 解决方案

14.3.3 讨论

14.4 用自定义选项初始化jQuery UI插件

14.4.1 问题

14.4.2 解决方案

14.4.3 讨论

14.5 创建你自己的jQuery UI插件默认值

14.5.1 问题

14.5.2 解决方案

14.5.3 讨论

14.6 获取和设置jQuery UI插件选项

14.6.1 问题

14.6.2 解决方案1:获取选项值

14.6.3 解决方案2:设置值

14.6.4 讨论

14.7 调用jQuery UI插件方法

14.7.1 问题

14.7.2 解决方案

14.7.3 讨论

14.8 处理jQuery UI插件事件

14.8.1 问题

14.8.2 解决方案1:向事件名称选项传递一个回调函数

14.8.3 解决方案2:用事件类型绑定自定义事件

14.8.4 讨论

14.9 销毁jQuery UI插件

14.9.1 问题

14.9.2 解决方案

14.9.3 讨论

14.10 创建jQuery音乐播放器

14.10.1 问题

14.10.2 解决方案

第15章 jQuery UI主题

15.0 导言

理解jQuery UI CSS的各个组件

15.1 用ThemeRoller设置jQuery UI窗口组件样式

15.1.1 问题

15.1.2 解决方案

15.1.3 讨论

15.2 覆盖jQuery UI布局和主题样式

15.2.1 问题

15.2.2 解决方案

15.2.3 讨论

15.3 为非jQuery UI组件应用主题

15.3.1 问题

15.3.2 解决方案

15.3.3 讨论

15.4 在一个页面上引用多个主题

15.4.1 问题

15.4.2 解决方案

15.5 附录:其他CSS资源

第16章 jQuery、Ajax、数据格式:HTML、XML、JSON、JSONP

16.0 导言

16.1 jQuery和Ajax

16.1.1 问题

16.1.2 解决方案

16.1.3 讨论

16.2 在整个网站上使用Ajax

16.2.1 问题

16.2.2 解决方案

16.2.3 讨论

16.3 使用带有用户反馈的简单Ajax

16.3.1 问题

16.3.2 解决方案

16.3.3 讨论

16.4 使用Ajax快捷方法和数据类型

16.4.1 问题

16.4.2 解决方案

16.4.3 讨论

16.5 使用HTML片段和jQuery

16.5.1 问题

16.5.2 解决方案

16.5.3 讨论

16.6 将XML转换为DOM

16.6.1 问题

16.6.2 解决方案

16.6.3 讨论

16.7 创建JSON

16.7.1 问题

16.7.2 解决方案

16.7.3 讨论

16.8 解析JSON

16.8.1 问题

16.8.2 解决方案

16.8.3 讨论

16.9 使用jQuery和JSONP

16.9.1 问题

16.9.2 解决方案

16.9.3 讨论

第17章 在大项目中使用jQuery

17.0 导言

17.1 使用客户端存储

17.1.1 问题

17.1.2 解决方案

17.1.3 讨论

17.2 为单个会话保存应用程序状态

17.2.1 问题

17.2.2 解决方案

17.2.3 讨论

17.3 在会话之间保存应用程序状态

17.3.1 问题

17.3.2 解决方案

17.3.3 讨论

17.4 使用JavaScript模板引擎

17.4.1 问题

17.4.2 解决方案

17.4.3 讨论

17.5 Ajax请求队列

17.5.1 问题

17.5.2 解决方案

17.5.3 讨论

17.6 处理Ajax和后退按钮

17.6.1 问题

17.6.2 解决方案

17.6.3 讨论

17.7 将JavaScript放在页面的最后

17.7.1 问题

17.7.2 解决方案

17.7.3 讨论

第18章 单元测试

18.0 导言

18.1 自动化单元测试

18.1.1 问题

18.1.2 解决方案

18.1.3 讨论

18.2 断言结果

18.2.1 问题

18.2.2 解决方案

18.3 测试同步回调

18.3.1 问题

18.3.2 解决方案

18.3.3 讨论

18.4 测试异步回调

18.4.1 问题

18.4.2 解决方案

18.4.3 讨论

18.5 测试用户操作

18.5.1 问题

18.5.2 解决方案

18.5.3 讨论

18.6 保持测试的原子性

18.6.1 问题

18.6.2 解决方案

18.6.3 讨论

18.7 分组测试

18.7.1 问题

18.7.2 解决方案

18.7.3 讨论

18.8 选择运行的测试

18.8.1 问题

18.8.2 解决方案

18.8.3 讨论

后记返回总目录内容提要

本书旨在向读者展示业界领先的前端开发人员在日常项目中使用jQuery的方式和方法。全书共分18章,分别由不同的作者撰写。这些业界精英将带领读者经历由简到繁的各种问题的解决过程,不管是jQuery新手还是老练的JavaScript开发人员,都能通过本书对jQuery的能力有全新的认识。

本书从基础知识和通用最佳实践的介绍开始,内容包括在页面中包含jQuery、做出选择、遍历和操纵;接着转向实际用例,带领读者寻找常见问题的解决方案,包括事件、特效、尺寸、表单和用户界面元素等;最后研究jQuery应用程序的测试以及将jQuery集成到复杂网站的方法。

无论是为jQuery前端开发人员,还是编写客户端代码的服务器端开发人员,都可以从本书中找到自己感兴趣的内容,并提高自己的开发本领。撰稿人各章节作者

Jonathan Sharp从1986年起开始热心于互联网和Web开发,在以后的岁月中,他曾为多家创业公司和财富500强公司工作过。Jonathan在内布拉斯加州的大奥马哈(Omaha)市创立了Out West Media有限责任公司,提供以定制XHTML、CSS和jQuery开发为中心的前端工程和架构服务。Jonathan是jQuery核心团队成员,在编码之余也是一位作家和演说家。Jonathan非常感激他的妻子Erin、女儿Noel、两只狗和两匹马。

Rob Burns供职于A Mountain Top有限责任公司,从事交互式Web应用程序开发。在过去的12年中,他采用多种工具和技术探索网站开发。在业余时间,他喜欢自然语言处理和开放源码软件项目中带来的众多机会。

Rebecca Murphey是一位独立前端架构顾问,开发充当服务器端和浏览器端之间胶水的定制前端解决方案。她还提供以jQuery程序库为重点的前端开发的培训。她和她的伙伴——两只狗和两只猫一起生活在北卡罗来纳州的达勒姆(Durham)。

Ariel Flesler是一位Web开发人员和视频游戏程序员。他从2007年1月起开始投入jQuery的开发,并在2008年5月加入核心团队。他出生于阿根廷布利诺斯艾利斯,曾就学于国家科技大学(阿根廷)。他最初的工作是ASP.NET(C#)程序员,后转向XHTML网站和Ajax应用的客户端开发。他目前在QB9工作,负责基于AS3的休闲游戏和MMO。

Cody Lindley是一位基督徒、丈夫、儿子、父亲、户外活动爱好者和专业的客户端工程师。从1997年起,他热衷于HTML、CSS、JavaScript、Flash、界面设计和HCI。他因创建模态/对话框解决方案ThickBox而享誉于jQuery社区。2008年,他正式加入jQuery团队,成为一位倡导者。他目前关注的方向是客户端优化技术,以及有关jQuery的写作和演讲。Cody的网站是http://www.codylindley.com。

Remy Sharp是一位开发人员、作家、演说家和博主。Remy于1999年开始了他的Web开发生涯,当时他是一个财经网站的唯一开发人员,在“网络繁荣”之中和之后的很长一段时间,他经历了网站运营各个方面的工作。现在,他在英国布莱顿(Brighton)运营自己的开发公司Left Logic,编写JavaScript、jQuery、HTML 5、CSS、PHP、Perl和其他自己熟悉的程序。

Mike Hostetler是一位发明家、企业家、程序员和自豪的父亲。从20世纪90年代中期,Mike就开始使用Web技术,在PHP和JavaScript Web应用程序开发方面有着丰富的经验。目前,Mike掌管位于科罗拉多州费城的Web技术咨询公司A Mountain Top有限责任公司。Mike频繁参与开源项目,是jQuery核心团队成员,负责QCubed PHP5 Framework项目并参与Drupal项目。当他不在计算机前时,喜欢徒步旅行、飞钓、滑雪以及和家人共享时光。

Ralph Whitbeck毕业于罗彻斯特(Rochester)理工学院,目前是位于纽约罗彻斯特的BrandLogic公司的高级开发人员。他在BrandLogic的工作包括界面设计、可用性测试、Web和应用程序开发。Ralph能够用ASP.NET、C#和 SQL Server开发复杂的Web应用系统,也能使用XHTML、CSS和JavaScript/jQuery等客户端技术实现客户认可的设计。2009年10月,Ralph加入jQuery团队,成为一位倡导者。Ralph喜欢和妻子Hope及三个儿子Brandon、Jordan和 Ralphie共度时光。你可以在他的个人博客(http://ralphwhitbeck.com)上了解更多有关他的情况。

Nathan Smith是从20世纪末就开始构建网站的一个古怪的家伙。他喜欢手动编写HTML、CSS和JavaScript,对设计和信息架构也有涉猎。他曾为Adobe Developer Center、Digital Web和.NET Magazine等在线及纸质出版物撰稿,在Adobe MAX、BibleTech、Drupal Camp、Echo Conference、Ministry 2.0、Refresh Dallas和Webmaster Jam Session等会议上发表过演讲。Nathan在FellowshipTech.com任UX开发人员,拥有阿斯伯里(Asbury)神学院的神学硕士学位。他启动了Godbit.com,这是一个旨在帮助教堂和神职人员更好使用Web的公共资源。他还创建了960 Grid System(http://www.960.gs)——一个页面布局草拟、设计和编码的框架。

Brian Cherne是一位软件开发人员,在规划和构建基于Web的应用程序、信息站和高流量电子商务网站方面有超过10年的经验。他也是hoverIntent jQuery插件的作者。在不摆弄代码的时候,Brian会跳交谊舞、练习武术或者学习俄罗斯语言文化。

Jörn Zaefferer是来自德国科隆的专业软件开发人员。他创建用于Web和桌面应用程序的应用编程接口(API)、图形用户界面(GUI)、软件架构和数据库。他的工作以Java平台为中心,同时围绕jQuery开发客户端脚本。2006年中期,他开始为jQuery做出贡献,目前已经共同创建和维护jQuery的单元测试框架QUnit;发布和维护了6个非常流行的jQuery插件,并且以作者和技术审核者身份参与了jQuery书籍的创作,还是jQuery UI的首席开发人员。

James Padolsey是一位热心的Web开发人员和博主,来自英国伦敦。自从第一次看到jQuery,他就为之疯狂;他编写了jQuery的教程、讨论文章和博客,并为社区贡献了丰富的插件。Jame将来的计划包括获得肯特(Kent)大学的计算机科学学位,以及不断开拓新领域的职业生涯。他的网站是http://james.padolsey.com。

Scott González是生活在北卡罗来纳罗利(Raleigh)的一位Web应用开发人员,他喜欢构建高动态性的系统和灵活的可伸缩框架。他从2007年开始为jQuery做出贡献,目前是jQuery的官方用户界面库jQuery UI的开发主力。Scott还在nemikor.com上编写了关于jQuery和jQuery UI的教程,并在许多会议上发表有关jQuery的演讲。

Michael Geary从电传打字机穿孔纸带的时代就开始了软件开发,当时“兼容标准”的含义只不过是遵循穿孔纸带数据交换的ECMA-10标准。现在,Mike是一位Web和Android开发人员,对编写快速、清晰和简洁的代码有着特别的兴趣,还喜欢在jQuery邮件列表上帮助其他开发人员。他的网站是http://mg.to。

Maggie Wachs、Scott Jehl、Todd Parker和 Patty Toland是Filament小组成员。他们一起为面向消费者和公司的网站、无线设备、安装的和基于Web的应用程序设计和开发实用的用户界面,他们的宗旨是提供直观易用的体验同时兼具广泛的可访问性。他们是jQuery UI团队的发起人和设计主力,设计和开发了ThemeRoller.com,并积极地投身于正式的jQuery UI程序库和CSS框架的持续开发。

Richard D. Worth是一位Web UI开发人员,jQuery UI的发布经理和服务时间最长的开发人员之一。他是Dialog、Progressbar、Selectable和Slider插件的作者或者共同作者。Richard还喜欢在全球进行有关jQuery和jQuery UI的演讲和咨询工作。他和他可爱的妻子Nancy在弗吉尼亚州北部(华盛顿郊区)一起抚养儿女。他们已经有了三个漂亮的孩子:Naomi、Asher和Isaiah。Richard的网站是http://rdworth.org/。技术编辑

Karl Swedberg,在4年前开始Web开发人员职业生涯之前,他曾经在中学教过英语,在广告公司担任文稿编辑并且拥有一间咖啡屋。现在,Karl为密歇根州大急流城(Grand Rapids)的Fusionary Media公司工作,专攻客户端脚本和交互设计。Karl是jQuery项目团队成员,《Learning jQuery 1.3》和《jQuery Reference Guide》(均由Packt出版)的合著者。你可以在http://www.learningjquery.com找到他编写的提示和教程。

Dave Methvin是PCPitstop.com首席技术官和该公司的创始股东之一。他从2006年开始使用jQuery,活跃于jQuery帮助小组,并且贡献了包括Corner和Splitter在内的多个流行jQuery插件。在加入PC Pitstop之前,Dave曾在《PC Tech Journal》和《Windows Magazine》担任执行编辑,是JavaScript方面的专栏作者。他持续地为多家PC相关网站(包括InformationWeek)撰稿。Dave持有弗吉尼亚大学计算机科学学士和硕士学位。

David Serduke是一位前端程序员,最近在服务器端投入了许多时间。在多年的编程工作之后,他于2007年底开始使用jQuery并很快加入了jQuery核心团队。David目前为金融机构创建网站,并将jQuery的优点带入ASP.NET企业应用程序。David住在加州北部,拥有加州大学伯克利分校电子工程学士学位和圣玛丽(St. Mary)学院的MBA学位。

Scott Mark是Medtronic公司的企业应用架构师。他致力于开发基于Web的个性化信息门户和事务型应用程序,关注可控环境中高可用性的维护。目前,他最感兴趣的领域是富互联网应用程序和多点触摸用户界面技术。Scott和他可爱的妻子、两个儿子和一条黑色的拉布拉多犬一起住在明尼苏达州。他的技术博客参见http://scottmark.wordpress.com。序

当我在2005年开始构建jQuery的时候,心中有一个简单的目标:我希望能够编写一个Web应用程序,使其能在所有主流浏览器上正常工作——不需要进一步的修补和bug修复。在我建立一组足以完成个人目标的实用程序前几个月,我认为自己已经接近目标了,完全没有意识到我的工作才刚刚开始。

从这些简单的成果开始,随着新用户将这些程序库用于自己的项目,jQuery已经逐渐成长和发展起来。已经证明它是JavaScript程序库开发中最具挑战性的部分;虽然为个人或者具体的应用程序构建一个程序库相当简单,但是开发用于尽可能多环境(旧的浏览器、遗留网页和大量陌生的标记)的程序库却非常困难。令人惊讶的是,尽管jQuery已经为处理更多用例而做了修改,但是大部分原始API却完好无损地保留了下来。

我感到特别有趣的一件事情是了解开发人员如何使用jQuery达到自己的目的。作为具有计算机科技背景的人,我对有这么多设计人员和非程序员感受到jQuery的吸引力而吃惊。看到他们使用这个程序库的方式,使我对简洁的API设计有了更好的理解。此外,许多高级程序员采用jQuery开发复杂的大型程序,对我也有很大的启发。不过,最令我感觉良好的是能够从使用程序库的每一个人那里学到知识。

使用jQuery的另一个好处是可扩展的插件结构。在刚刚开发jQuery的时候,我确实为开发人员提供了扩展API的一些简单方法。这些扩展已经发展成了许多形形色色的插件社区,这些插件组成了应用程序、开发人员和用例这一完整的生态系统。这些插件社区加速了jQuery的成长——没有它们,这个程序库就没有今天的成就,所以我很高兴在本书中加入一些专门的章节,讲解一些最有趣的插件以及它们的用途。扩展对jQuery用途的感性认识的最佳途径之一,就是学习和使用来自jQuery插件社区的代码。

上述原因使这本“食谱”变得如此有趣:它为你带来了开发人员在日复一日的编码中完成的杰作和学习到的技巧,并加以提炼和总结,供以后使用。从个人的角度,我认为“食谱”类型的书籍是挑战我对语言或者程序库感性认识的最佳途径之一。我很乐意看到我所熟知的API被人们以新颖而有趣的方式利用。希望本书能够很好地为读者服务,将这些新颖而有趣的jQuery使用方法传授给大家。——John ResigjQuery创始人、首席开发者第1章jQuery基础Cody Lindley1.0 导言

既然你已经选择了一本有关jQuery的“食谱”,本书作者基本就可以假定你对jQuery的定义和功能有了大致的认识。坦白说,“食谱”通常是为寻求加强已有知识基础的读者所编写的。因此,本书使用了问题-解决方案-讨论的编排方式,快速地介绍常见问题的解决方案。但是,如果你是一位jQuery新手,不要把本书抛诸脑后,认为第1章是老生常谈,这一章就是专为新手所写的。

如果你需要复习,或者只有很少或者完全没有jQuery的知识,第1章将帮助你学习jQuery的概要知识(其他章节假定你已经了解了这些基础知识)。现在,从实际出发,如果你对JavaScript和DOM完全没有了解,可能应该退后一步,问问自己:在对JavaScript核心语言及其与DOM之间的关系没有基本理解的情况下,学习jQuery是否可行。我的建议是在接触jQuery之前,先认真学习DOM和JavaScript的核心知识。我强烈建议将David Flanagan编著的《JavaScript: The Definitive Guide》(http://oreilly.com/catalog/9780596000486,O’Reilly出版)一书作为阅读本书之前的入门读物。但是,如果你试图在学习DOM和JavaScript之前就开始jQuery的学习,也不要让我的一家之言阻挡了脚步。许多人都通过jQuery学到了这些技术的有用知识。虽然这样做不理想,但是只要我们勇敢面对,仍然可以实现学习的目的。

说了这么多,现在我们来看看jQuery的正式定义和功能的简单描述:

jQuery是一个开放源码的JavaScript程序库,简化了HTML文档(更准确地说是文档对象模型(Document Object Model,DOM))与JavaScript之间的交互。

用通俗的话说,也为了让守旧的JavaScript黑客明白,jQuery将动态HTML(DHTML)变得极其简单。具体地说,jQuery简化了HTML文档遍历和操纵、浏览器事件处理、DOM动画、Ajax交互和跨浏览器JavaScript开发。

理解了jQuery的正式含义之后,我们接下来研究选择使用jQuery的原因。1.0.1 为什么使用jQuery

在“食谱”中谈论jQuery的优点似乎有点傻,尤其是在你已选择阅读这本“食谱”,很可能已经意识到这些优点的情况下。

所以,虽然这么做就像在唱诗班面前传道,但是我们仍然要简单地看看开发人员选择使用jQuery的原因。通过在研究“怎么做”之前先解释“为什么”,能够促进你对jQuery基础知识的掌握。

在jQuery案例的构造中,我不打算将jQuery与其竞争者作比较来提高jQuery的重要性。这是因为,我相信这方面还没有真正的直接竞争者。而且,我相信jQuery是当今唯一同时满足设计师和程序员需求的程序库。从这一方面说,jQuery是独一无二的。

市场上充斥着声名狼藉的JavaScript程序库和框架,但是我绝对相信,每个产品都有自己合适的用途和价值。进行广泛的比较很愚蠢,但是人们总是这么做,连我自己也不能免俗。所有的程序库都有价值,哪一个更胜一筹取决于谁使用它以及如何使用它,而不是它实际上能做什么。而且,根据我的观察,考虑到JavaScript开发的目标广泛,各种JavaScript程序库之间的微小差别根本不值一提。所以,我们不再进一步进行哲学方面的探讨了,而是列出能够支持选择jQuery的一组特性:● jQuery是开放源码的程序库,该项目在MIT和GNU通用公共授权(General Public License,GPL)下授权使用。在很多方面,它

都是免费的!● jQuery很小(精简后只有18KB),用GZIP压缩(解压后为

114KB)。● jQuery的流行程度令人难以置信,也就是说,有着大规模的用户

社区,许多贡献者以开发者和传道者的身份参与该项目。● jQuery规范了Web浏览器之间的差异,这样你就不需要为此费心。● jQuery有意地设计为轻量级的程序库,具有简单而又智能的插件

架构。● jQuery的插件库(http://plugins.jquery.com)规模很大,而且从

jQuery发布之后就稳步增长。● jQuery的API有完整的文档,包括内联的代码示例,这在

JavaScript程序库中可以称得上豪华了。多年以来,任何的文档

都是奢侈品。● jQuery很友好,提供了一些方法帮助用户避免与其他JavaScript

程序库的冲突。● jQuery的社区支持相当实用,包括了多个邮件列表、IRC频道和

来自jQuery社区的大量教程、文章、博客文章。● jQuery的开发是开放式的,任何人都可以提交缺陷修复、改进和

开发帮助。● jQuery的开发是稳定一致的,也就是说,开发团队并不担忧更新

的发布。● 大型机构(如Microsoft、Dell、Bank of America、Digg、CBS、

Netflix)的采用已经并将持续地提高jQuery的生命力和稳定性。● jQuery先于浏览器吸收了来自W3C的规范。例如,jQuery支持大

部分CSS3选择器。● jQuery目前已经为流行浏览器(Chrome 1、Chrome Nightly、IE

6、IE 7、IE 8、Opera 9.6、Safari 3.2、WebKit Nightly、Firefox

2、Firefox 3、Firefox Nightly)上的开发进行了测试和优化。● jQuery在设计师的手里和程序员手里一样强大,对两类用户一视

同仁。● jQuery优雅、讲求方法以及改变JavaScript书写方式的观念正在

成为标准。只要想想有多少其他解决方案借用了选择器和链接(chainning)模式就能明白这一点。● jQuery无法解释的副作用——良好的编程感觉具有感染力,令人

无法抗拒;甚至连批评家都深深地为jQuery的特性所着迷。● jQuery的文档有许多使用路径(例如,API浏览器、仪表板应

用、“小抄”),包括一个离线API浏览器(AIR应用程序)。● jQuery旨在倾向于简化无干扰JavaScript方法。● jQuery的核心仍然是一个JavaScript程序库(与框架相反),同时

又提供用于用户界面部件和应用程序开发的姐妹项目(jQuery

UI)。● 由于jQuery建立在大部分开发人员和设计师已经理解的概念(例

如,CSS和HTML)之上,因此它的学习曲线很平滑。

我认为,使jQuery不同于其他解决方案的是上述特性的结合,而不是单一特性。作为JavaScript工具,整个jQuery程序包是无以匹敌的。1.0.2 jQuery原则

jQuery的原则是“用更少的代码做更多的事”。这一原则可以进一步分为三个概念:●( 通过CSS选择器)寻找一些元素,(通过jQuery方法)对其进行

某些处理。● 链接一组元素上的多个jQuery方法。● 使用jQuery包装器和隐式迭代。

详细了解这三个概念是编写你自己的jQuery代码和扩展本书中学到的秘诀的基础。下面详细地解释这些概念。1.寻找一些元素并对其进行某些处理

更具体地讲,这条原则是指在DOM中找到一组元素,然后对这组元素进行某种处理。例如,研究一下这样的场景:你想要对用户隐藏一个

元素,在隐含的
中加载一些新的文本内容,修改
的属性,最后让隐藏的
再次可见。

上面的最后一句话转换成的jQuery代码如下:

old content

我们逐条查看这4条jQuery语句:● 隐藏页面上的

元素,使用户无法看到它。● 用新的文本(new content)替换隐藏
元素中的文本。● 用新的属性(class)和值(updatedContent)更新
元素。● 在页面上显示
元素,使用户又能看到它。

如果现在这些jQuery代码还让你觉得深奥,也没有关系。我们将在本章的第一个秘诀中介绍这些基础知识。另外,从这个代码示例中,你需要了解的是jQuery“找到一些元素并对其进行某些处理”的概念。在读例子中,用jQuery函数(jQuery())找出HTML页面中所有的

元素,然后用jQuery方法对它们进行了一些处理(例如,hide()、text()、addClass()、show())。2.链

jQuery的构造方式允许jQuery方法链。例如,为什么不在找到元素之后,将该元素上的操作链接起来呢?上一个代码示例阐述了“找到一些元素并对其进行某些处理”的概念,它可以用链改写为一条JavaScript命令。

利用链,下面的代码原来如下://隐藏页面上的所有divjQuery('div').hide();//更新所有div中包含的文本jQuery('div').text('new content');//为所有div添加值为updatedContent的class属性jQuery('div').addClass("updatedContent");//显示页面上的所有divjQuery('div').show();

更改后的代码如下:jQuery('div').hide().text('new content').addClass("updatedContent").show();

或者加上缩进和换行,如下所示:jQuery('div')   .hide()   .text('new content')   .addClass("updatedContent")   .show();

简而言之,链允许你在目前用jQuery函数选择(当前用jQuery功能包装起来)的元素上应用无限的jQuery方法链。在后台,每当应用jQuery方法之前,总是返回以前选择的元素,使链能够继续下去。在未来的秘诀中你将会看到,因为插件也以这种方式构造(返回包装的元素),所以使用插件也不会破坏这一链条。

虽然并非显而易见,但是根据对代码的研究,通过一次性选择一组DOM元素,由jQuery方法以链的方式进行多次操作,能够减少处理开销。避免不必要的DOM遍历是网页性能改进的关键部分,一定要尽可能重用或者缓存选中的DOM元素集。3.jQuery包装器集

大部分时候,如果jQuery很复杂,你会使用所谓的“包装器”。换句话说,你会从一个HTML页面上选择一组用jQuery功能包装的DOM元素。我个人常常将其称为“包装器集”或者“包装集”,因为它是一组由jQuery功能包装的元素。有时候这种包装器集包含单个DOM元素,其他时候则包含多个元素,甚至还有包装器集没有包含任何元素的情况。在这种情况下,jQuery提供的方法/属性在空包装器集中将会“无提示”地失败,这就可以避免不必要的if语句。

现在,以我们用于解释“寻找一些元素并对其进行某些处理”的代码为基础,如果在网页上添加几个

元素,你认为会发生什么情况呢?在下面这段更新过的代码示例中,添加了三个
元素,这样网页上一共有4个
元素:
old content
old content
old content
old content

你在这里没有显式编写任何循环代码,但是猜猜看会怎么样?jQuery扫描网页,将所有

元素放在包装器集中,这样我所使用的jQuery方法在集合中的每个DOM元素上执行(亦称隐式迭代)。例如,.hide()方法实际上应用到集合中的每个元素。所以,如果再次查看代码,就会发现每个方法都应用到页面上的每个
元素,就像你编写了一个循环在每个DOM元素上调用各个jQuery方法一样。更新后的代码示例将导致页面中的所有
被隐藏,更新文本内容,指定一个新的类值,然后再次显示。

对包装器集和默认的循环系统(隐式迭代)的理解对于围绕循环的高级概念是至关重要的。你只要记住,在真正进行更多的循环(例如,jQuery('div').each(function(){})之前,已经发生了简单的循环。你也可以这样看:包装器中的每个元素一般都会被所调用的jQuery方法所改变。

还要记住一点,在以后的章节中你将会学习到,某些情况下只有第一个元素(而不是包装器集中的所有元素)受到jQuery方法(例如,attr())的影响。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载