轻剑招式繁多,记不全很正常。这一页把 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(),忘了怎么写——回这一页。