轻剑招式繁多,记不全很正常。这一页把 jQuery 的常用方法与选择器按类别摊开——
每行一句话说明,附“学在哪一式”的指路牌。翻到即用,离线可查。
使用说明
- 本页以本站携带的 jQuery 4.0.0 为准,收编的方法均经实测;
“第 X 式”指第三回 jQuery 篇的章节;
- 写法约定:实例方法写作
$el.方法(),静态工具写作 $.方法();
- 被移除的老方法、仍在但已弃用的方法单独列在页面末尾——“不能用”与“不推荐”是两回事。
选择器
| 写法 | 说明 | 学在哪 |
$('#id') / $('.class') / $('tag') / $('*') | 基本四式:按 id / 类 / 标签 / 全部 | 第二式 |
$('div.card') / $('#a .b') / $('#a > .b') / $('h2, h3') | 组合:交集、后代、子代、逗号并集 | 第二式 |
$('[type="text"]') / $('[href^="https"]') / $('[data-x]') | 属性:等于 / 前缀 ^= / 后缀 $= / 包含 *= / 存在 | 第二式 |
:first :last :even :odd :eq(n) :lt(n) :gt(n) :nth(n) | 位置伪类(jQuery 扩展,4.0 中仍可用;日常推荐方法版 .first()/.eq()) | 第二式 |
:input :text :password :checkbox :radio :submit :file | 表单:按控件类型点名 | 第二式 |
:checked :selected :disabled :enabled | 表单状态:勾选 / 下拉选中 / 禁用 / 可用(实时状态,现查现用) | 第二式 |
筛选与遍历
| 方法 | 说明 | 学在哪 |
.filter(选择器/函数) | 从当前集合里筛出符合条件的 | 第七式 |
.first() / .last() / .eq(n) / .slice(a, b) | 按位置取:第一个 / 最后一个 / 第 n 个(0 起)/ 区间 | 第七式 |
.not(选择器/函数) / .is(选择器) / .has(选择器) | 排除 / 判断(返回布尔)/ 谁的子孙里有 | 第七式 |
.parent() / .parents() / .parentsUntil(选择器) / .closest(选择器) | 父亲 / 全部祖先 / 一路向上直到谁之前 / 最近的匹配(含自己) | 第七式 |
.children() / .find(选择器) | 直接子元素 / 全部后代 | 第七式 |
.siblings() / .next() / .prev() | 同级全部 / 后一个 / 前一个 | 第七式 |
.nextAll() / .prevAll() / .nextUntil(选择器) / .prevUntil(选择器) | 后面全部 / 前面全部 / 走到谁为止(不含终点) | 第七式 |
.each(函数) | 逐个处理,回调 (index, element),this 是当前元素 | 第七式 |
.map(函数) / .get(n) / .toArray() / .index() | 映射成新集合 / 取原生元素 / 转数组 / 取序号 | 第七式 |
.add(选择器) / .addBack() / .end() / .contents() | 并入另一批 / 找回上一环 / 退回上一步 / 连文本节点一起取 | 第七式、第十二式 |
内容、属性与数据
| 方法 | 说明 | 学在哪 |
.text(值) / .html(值) | 读写文本(安全)/ 读写 HTML(传入用户输入要当心) | 第三式 |
.val(值) | 读写表单控件的值(input / select / textarea) | 第三式 |
.attr(名, 值) / .removeAttr(名) | 读写 HTML 属性(href、title、data-*…) | 第三式 |
.prop(名, 值) / .removeProp(名) | 读写“状态属性”(checked、disabled、selected) | 第三式 |
.data(名, 值) / .removeData(名) | 在元素上挂运行时数据(任意 JS 值,不写入 HTML) | 第十二式 |
.css(属性, 值) | 读写行内样式;读回的是计算后的像素值 | 第四式 |
类、尺寸与位置
| 方法 | 说明 | 学在哪 |
.addClass() / .removeClass() / .toggleClass() / .hasClass() | 加 / 去 / 切换 / 判断类名,样式交给 CSS | 第四式 |
.width() / .height() | 内容区宽高(传值即设置) | 第十二式 |
.innerWidth() / .innerHeight() | 内容区 + 内边距 | 第十二式 |
.outerWidth([true]) / .outerHeight([true]) | 加边框;传 true 再加外边距 | 第十二式 |
.offset() / .position() | 相对文档 / 相对最近定位祖先的位置,返回 {top, left} | 第十二式 |
.scrollTop([值]) / .scrollLeft([值]) | 读写滚动位置;.scrollTop(0) 即回到顶部 | 第十二式 |
节点操作
| 方法 | 说明 | 学在哪 |
$('<li>') | 凭空造节点,再用 .text() / .addClass() 妆点 | 第八式 |
.append() / .prepend() | 插进子级末尾 / 开头 | 第八式 |
.after() / .before() | 插到同级之后 / 之前 | 第八式 |
.appendTo() / .prependTo() / .insertAfter() / .insertBefore() | 反向写法:主语宾语互换,效果相同 | 第八式 |
.remove() / .empty() / .detach() | 连事件删除 / 只清内容 / 摘下来留着事件 | 第八式 |
.clone([true]) | 复制节点;true 连事件一起复制 | 第八式 |
.wrap() / .wrapAll() / .wrapInner() / .unwrap() | 各自包 / 合起来包 / 包内容 / 拆父级 | 第八式 |
.replaceWith() / .replaceAll() | 整段替换(正写 / 反写) | 第八式 |
事件
| 写法 | 说明 | 学在哪 |
.on('click', 函数) / .off('click') | 绑定 / 解绑(事件名的统一入口) | 第五式 |
.on('click', '选择器', 函数) | 事件委托:动态元素一出生就响应 | 第五式 |
.one('click', 函数) | 只响应一次,之后自动解绑 | 第五式 |
.trigger('事件名') / .triggerHandler('事件名') | 主动触发(含默认行为)/ 只跑处理函数 | 第五式 |
.hover(进入, 离开) | mouseenter + mouseleave 的快捷写法(自 jQuery 3.3 起弃用,新代码请用 on() 分别绑定) | 第五式 |
$(function () {…}) | 文档就绪后执行($(document).ready 的简写) | 第一式 |
| 事件名(部分) | click dblclick mouseenter mouseleave mousemove keydown keyup submit change input focus blur scroll resize | 第五式 |
| 事件对象 | e.preventDefault() 拦默认行为、e.stopPropagation() 截冒泡、e.stopImmediatePropagation() 连同级后续处理函数一并拦下、e.target 事件源头 | 第五式 |
效果与动画
| 方法 | 说明 | 学在哪 |
.hide() / .show() / .toggle() | 显隐三件套;带速度参数即成动画 | 第六式 |
.fadeIn() / .fadeOut() / .fadeToggle() / .fadeTo(时长, 透明度) | 淡入 / 淡出 / 切换 / 淡到指定透明度 | 第六式 |
.slideUp() / .slideDown() / .slideToggle() | 滑动收起 / 展开 / 切换 | 第六式 |
.animate(属性, 时长[, 回调]) | 自定义数值动画,支持 'show'/'hide'/'toggle' 特殊值 | 第六式 |
.stop([清队列][, 跳到终点]) | 急停:当前 / 连队列一起停 | 第六式 |
.delay(毫秒) / .queue() / .clearQueue() / .finish() | 排队等待 / 查看队列 / 清空队列 / 全部跑到终点 | 第六式 |
Ajax
注意:Ajax 需要通过 http(s) 打开页面;file:// 双击时本章演示会走失败分支(章节内有说明)。
| 方法 | 说明 | 学在哪 |
$.get(url, 回调) / $.post(url, 数据, 回调) | GET 取 / POST 交 | 第九式 |
$.getJSON(url) | 取 JSON 并自动解析 | 第九式 |
$.ajax({…}) | 完整配置:url / method / dataType / success / error / timeout… | 第九式 |
.done() / .fail() / .always() | 成功 / 失败 / 无论成败(链式三结局) | 第九式 |
$el.load(url [选择器]) | 把返回的 HTML(或其中一段)直接塞进元素 | 第九式 |
$.getScript(url) | 动态加载并执行一个 JS 文件 | 第九式 |
$.ajaxSetup({…}) | 设置全局默认值(超时、请求头等),全局生效、慎用 | 第九式 |
$form.serialize() / $form.serializeArray() | 把带 name 的控件打包成查询串 / 数组 | 第九式 |
ajaxStart / ajaxSend / ajaxSuccess / ajaxError / ajaxComplete / ajaxStop | 全局钩子:任何一个请求的生命周期都能统一处理(做加载提示正合适) | 第九式 |
工具函数($.*)
| 方法 | 说明 | 学在哪 |
$.each(obj, fn) | 遍历数组或对象,回调 (index, value) | 第十一式 |
$.map(arr, fn) / $.grep(arr, fn) | 映射成新数组 / 按条件筛选(都返回新数组) | 第十一式 |
$.inArray(v, arr) | 找下标,找不到返回 -1 | 第十一式 |
$.merge(a, b) / $.makeArray(obj) / $.uniqueSort(arr) | 合并(原地)/ 类数组转真数组 / 给 DOM 元素数组去重排序(普通数字、字符串数组会原样返回) | 第十一式 |
$.extend([true,] 目标, 源…) | 合并对象;第一个参数传 true 为深合并(插件默认选项就靠它) | 第十一式 |
$.isEmptyObject(obj) / $.isPlainObject(obj) | 判空对象 / 判纯对象 | 第十一式 |
$.param(obj) | 对象转查询串(自动 URL 编码) | 第十一式 |
$.parseHTML() / $.parseXML() | 把字符串解析成 DOM 节点数组 / XML 文档 | — |
$.contains(a, b) / $.escapeSelector(s) | 判断包含关系 / 转义特殊字符的选择器 | — |
$.noConflict() | 把 $ 让还给别的库(页面同时用多个库时才需要) | — |
$.fn.extend({…}) | 往 jQuery 原型上挂自定义插件方法 | 第十三式 |
$.extend({…}) | 扩展全局工具函数($.你的工具()) | 第十三式 |
链式调用与集合
| 写法 | 说明 | 学在哪 |
$el.addClass('a').text('b').show() | 大多数方法返回自身,可一路点下去 | 第十二式 |
$el.find('p').addClass('x').end().addClass('y') | .end() 退回上一环,接着操作原集合 | 第十二式 |
$el.find('.item').addBack() | 把上一环(或起点)并回来一起操作 | 第十二式 |
$el.length / $el[i] / $el.get(i) | 集合大小 / 取第 i 个原生元素 | 第一式 |
jQuery 4.0 的移除与弃用清单
这一节请务必看清——它区分了“已经不存在”和“还在但不推荐”两件事:
| 状态 | 成员 | 替代写法 |
| 已移除(调用即报错) |
$.trim()、$.parseJSON()、$.now() |
s.trim()、JSON.parse()、Date.now() |
$.type()、$.isArray()、$.isFunction()、$.isNumeric()、$.isWindow()、$.nodeName()、$.camelCase()、.live()、.die() |
typeof / Array.isArray() / 原生判断;事件用 on() / off() |
| 仍在、已弃用 |
.bind()、.unbind()、.delegate()、.undelegate()、.hover()、$.proxy() |
on() / off()、原生 Function#bind——功能还能用,但写新代码就用新写法 |
心法:版本事实以源码与实测为准
网上不少文章把“弃用”说成“移除”,也有的把“仍然可用”写成“早就没了”。
本站本页的结论全部对照仓库内 reference/jquery/jquery-4.0.0.js 源码并在浏览器中实测过——
遇到分歧,认源码,别认传闻。
一句话记忆
选择器找对象,遍历换圈子,text / html / val 管内容,attr / prop / data 管属性与数据;
on / off 管事件,fade / slide / animate 管动画,$el.load / $.get / $.getJSON 管取数,
$.* 是工具箱。链子断了找 .end(),忘了怎么写——回这一页。