jQuery核心
jQuery核心是jQuery库的基础部分,提供了核心函数、实用工具、异步管理机制等。本章节详细说明jQuery核心API的用法、参数及版本变更。
核心方法
jQuery() 核心函数
用于选择DOM元素、创建元素或包装DOM对象以使用jQuery方法。
| 签名 | 描述 | 版本 |
|---|
jQuery(selector [, context]) | 基于CSS选择器查找元素 | 1.0+ |
jQuery(element) | 将单个DOM元素包装为jQuery对象 | 1.0+ |
jQuery(elementArray) | 将DOM元素数组包装为jQuery对象 | 1.0+ |
jQuery(object) | 将普通对象包装为jQuery对象 | 1.0+ |
jQuery(jQuery object) | 克隆现有jQuery对象 | 1.0+ |
jQuery(html [, ownerDocument]) | 根据HTML字符串创建DOM元素 | 1.0+ |
jQuery(html, attributes) | 创建元素并同时设置属性(1.4+支持属性对象) | 1.4+ |
jQuery(callback) | 等同于$(document).ready(callback) | 1.0+ |
版本变更:
- 1.4:
jQuery(html, attributes)支持传入包含属性、事件、CSS的映射对象。
- 1.8:不再支持
jQuery(html, props)中的某些属性(如enctype)的跨浏览器设置。
- 3.0:
jQuery(html)创建的脚本元素在插入文档前不再执行。
jQuery.noConflict()
将变量$的控制权交还给其他库。
| 签名 | 描述 | 版本 |
|---|
jQuery.noConflict([removeAll]) | 还原$,返回jQuery;若removeAll为true则还原jQuery本身 | 1.0+ |
jQuery.ready()
自定义的Promise-like对象,在DOM准备就绪时解析。
| 签名 | 描述 | 版本 |
|---|
jQuery.ready | 返回一个thenable对象,可用于等待DOM就绪 | 3.0+ |
jQuery.readyException(error) | 处理jQuery()回调中同步抛出的错误 | 3.1+ |
jQuery.holdReady()
暂停或恢复ready事件的执行。
| 签名 | 描述 | 版本 | 状态 |
|---|
jQuery.holdReady(hold) | 若hold为true则暂停ready触发 | 1.6+ | 3.2+不鼓励使用,推荐原生async/defer |
核心属性
| 属性 | 描述 | 版本 | 状态 |
|---|
jQuery.fn | jQuery.prototype的别名,用于插件扩展 | 1.0+ | 活跃 |
jQuery.fn.jquery | 返回jQuery版本号的字符串($().jquery) | 1.0+ | 活跃 |
jQuery.selector | 存储构造jQuery对象时使用的原始选择器 | 1.3+ | 1.7+废弃,3.0+移除 |
jQuery.context | 存储原始上下文对象 | 1.3+ | 1.7+废弃,3.0+移除 |
jQuery.expando | 用于数据缓存的唯一标识符 | 1.0+ | 内部使用 |
jQuery.cssHooks | 钩子,用于自定义CSS属性获取/设置 | 1.4.3+ | 活跃 |
jQuery.cssNumber | 指示哪些CSS属性无需添加px单位 | 1.4.3+ | 4.0+移除 |
jQuery.cssProps | 属性名规范化映射 | 1.4.3+ | 4.0+移除 |
延迟对象与回调管理
jQuery.Deferred()
工厂函数,返回链式延迟对象,用于管理异步回调。
| 方法 | 描述 | 版本 |
|---|
deferred.done() | 添加成功回调 | 1.5+ |
deferred.fail() | 添加失败回调 | 1.5+ |
deferred.progress() | 添加进度回调 | 1.7+ |
deferred.always() | 添加无论成功/失败都执行的回调 | 1.6+ |
deferred.then() | 添加成功/失败/进度回调,并可链式转换 | 1.5+ |
deferred.catch() | 添加失败回调(Promise兼容) | 3.0+ |
deferred.resolve() | 成功解决延迟对象 | 1.5+ |
deferred.reject() | 拒绝延迟对象 | 1.5+ |
deferred.notify() | 触发进度回调 | 1.7+ |
deferred.promise() | 返回只读Promise视图 | 1.5+ |
deferred.state() | 返回当前状态(pending/resolved/rejected) | 1.7+ |
版本变更:
- 1.8:
deferred.then()行为改变,现在返回新的Deferred而非过滤原对象。
- 3.0:
deferred.catch()作为.then(null, ...)的别名加入。
- 4.0:Deferred和Callbacks模块在slim构建中被移除。
jQuery.Callbacks()
多用途回调列表对象。
| 方法 | 描述 | 版本 |
|---|
callbacks.add() | 添加回调 | 1.7+ |
callbacks.remove() | 移除回调 | 1.7+ |
callbacks.fire() | 执行所有回调 | 1.7+ |
callbacks.disable() | 禁用回调列表 | 1.7+ |
callbacks.lock() | 锁定当前状态 | 1.7+ |
callbacks.fired() | 检查是否已执行过 | 1.7+ |
callbacks.locked() | 检查是否被锁定 | 1.7+ |
标志参数:once、memory、unique、stopOnFalse。
jQuery.when()
组合多个Deferred或Thenable对象。
| 签名 | 描述 | 版本 |
|---|
jQuery.when(deferreds...) | 返回主Deferred,在所有子对象解决后解决 | 1.5+ |
版本变更:
- 1.8:支持传入任意数量的Deferred或普通值。
- 3.0:如果传入单个Deferred,返回的Promise保留了该Deferred的方法(如
.then)。
实用工具函数
类型检测(4.0+移除,推荐原生方法)
| jQuery方法 | 原生替代 | 支持版本 | 移除版本 |
|---|
jQuery.isArray() | Array.isArray() | 1.3+ | 4.0 |
jQuery.isFunction() | typeof value === 'function' | 1.2+ | 4.0 |
jQuery.isWindow() | value === window | 1.2+ | 4.0 |
jQuery.isNumeric() | !isNaN(parseFloat(value)) && isFinite(value) | 1.7+ | 4.0 |
jQuery.isPlainObject() | 无直接原生方法 | 1.4+ | 保留 |
jQuery.isEmptyObject() | Object.keys(value).length === 0 | 1.4+ | 保留 |
jQuery.isXMLDoc() | 检查ownerDocument属性 | 1.1.4+ | 保留 |
jQuery.type() | typeof(但无法区分null/数组等) | 1.4.3+ | 4.0 |
数组与对象操作
| 方法 | 描述 | 版本 | 变更 |
|---|
jQuery.each() | 遍历数组或对象 | 1.0+ | 4.0仍保留 |
jQuery.map() | 遍历数组或对象,生成新数组 | 1.0+ | 4.0仍保留 |
jQuery.grep() | 过滤数组 | 1.0+ | 保留 |
jQuery.inArray() | 在数组中查找值 | 1.2+ | 保留 |
jQuery.makeArray() | 将类数组对象转为真数组 | 1.2+ | 保留 |
jQuery.merge() | 合并两个数组 | 1.0+ | 保留 |
jQuery.unique() | 去重DOM元素数组(3.0前仅限DOM) | 1.1.3+ | 3.0别名uniqueSort |
jQuery.uniqueSort() | 排序并去重DOM元素数组 | 3.0+ | 保留 |
字符串与数据操作
| 方法 | 描述 | 版本 | 状态 |
|---|
jQuery.trim() | 移除字符串首尾空白 | 1.0+ | 4.0移除,用String.prototype.trim |
jQuery.param() | 序列化对象为查询字符串 | 1.2+ | 保留 |
jQuery.parseHTML() | 解析HTML字符串为DOM节点数组 | 1.8+ | 保留 |
jQuery.parseXML() | 解析XML字符串为XML文档 | 1.5+ | 保留 |
jQuery.parseJSON() | 解析JSON字符串(原生JSON.parse包装) | 1.4.1+ | 4.0移除 |
jQuery.escapeSelector() | 转义CSS选择器中的特殊字符 | 3.0+ | 保留 |
jQuery.globalEval() | 在全局上下文中执行脚本 | 1.0.4+ | 保留 |
jQuery.htmlPrefilter() | 修改传递给DOM操作方法的HTML字符串 | 1.12/2.2+ | 3.5+改为恒等函数 |
jQuery.error() | 抛出异常 | 1.4.1+ | 保留 |
数据缓存
| 方法 | 描述 | 版本 |
|---|
jQuery.data() | 为元素存储/获取任意数据 | 1.2.3+ |
jQuery.removeData() | 移除数据 | 1.2.3+ |
jQuery.hasData() | 检查元素是否有数据关联 | 1.5+ |
版本变更:
- 1.4:数据缓存完全重写,使用内部
Data对象。
- 3.0:
jQuery.data()不再暴露给外部,推荐使用.data()实例方法。
队列管理
| 方法 | 描述 | 版本 |
|---|
jQuery.queue() | 显示或操作匹配元素上的函数队列 | 1.2+ |
jQuery.dequeue() | 执行队列中的下一个函数 | 1.2+ |
说明:主要用于动画效果,但可用于任意自定义队列。
函数操作
| 方法 | 描述 | 版本 | 状态 |
|---|
jQuery.proxy() | 固定函数的上下文 | 1.4+ | 保留 |
jQuery.noop() | 空函数 | 1.4+ | 保留 |
对象扩展
| 方法 | 描述 | 版本 |
|---|
jQuery.extend() | 合并两个或多个对象(深拷贝可选) | 1.0+ |
jQuery.fn.extend() | 将对象属性扩展到jQuery原型上,用于插件开发 | 1.0+ |
版本变更重点记录
| 版本 | 核心变更 |
|---|
| 1.0 | 初始版本,包含基础核心方法 |
| 1.2 | 引入jQuery.data()、队列方法 |
| 1.3 | 添加jQuery.isArray()、jQuery.inArray() |
| 1.4 | 大量新工具函数(isEmptyObject、isPlainObject等),jQuery.proxy()加入 |
| 1.5 | 引入Deferred、Ajax重构 |
| 1.6 | jQuery.holdReady()加入 |
| 1.7 | Callbacks模块、Deferred进度通知 |
| 1.8 | jQuery.parseHTML(),Deferred行为调整 |
| 1.9 | 移除jQuery.browser、jQuery.sub()等 |
| 2.0 | 放弃IE 6-8支持,API同1.9 |
| 3.0 | 加入jQuery.uniqueSort()、jQuery.escapeSelector(),jQuery.unique()保留为别名;.catch();移除已废弃属性.context、.selector |
| 3.5 | jQuery.htmlPrefilter变为恒等函数,移除针对旧浏览器的HTML修正 |
| 4.0 | 移除大量工具函数(isArray、parseJSON、trim、type等),要求原生实现;jQuery.cssNumber、jQuery.cssProps移除;Deferred与Callbacks从slim构建移除;不再支持IE<11;push、sort、splice从jQuery原型移除 |
核心对象与属性表
| 对象/属性 | 类型 | 描述 | 版本 |
|---|
jQuery | 函数 | 核心工厂函数 | 1.0+ |
$ | 函数 | 引用jQuery的别名 | 1.0+ |
jQuery.fn | 对象 | 原型对象,用于实例方法扩展 | 1.0+ |
jQuery.Deferred | 函数 | 延迟对象工厂 | 1.5+ |
jQuery.Callbacks | 函数 | 回调列表工厂 | 1.7+ |
jQuery.ready | Promise-like | 文档就绪Promise | 3.0+ |
jQuery.support | 对象 | 浏览器特性检测集合 | 1.3+ (1.9+标记为私有) |
jQuery.browser | 对象 | 用户代理检测(1.3引入,1.9移除) | 1.3-1.8 |
总结:jQuery核心提供了从基础选择、工具函数到异步流程控制的完整API。随着浏览器标准演进,部分历史API已在4.0版本中被原生方法替代,开发者应根据项目需求选择合适的版本并关注迁移指南。