什么是jQurey
简介
jQuery 是一个 JavaScript 函数库。
jQuery 是一个轻量级的”写的少,做的多”的 JavaScript 库。
jQuery 库包含以下功能:
- HTML 元素选取
- HTML 元素操作
- CSS 操作
- HTML 事件函数
- JavaScript 特效和动画
- HTML DOM 遍历和修改
- AJAX
- Utilities
使用 jQuery 库
jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数。
可以通过下面的标记把 jQuery 添加到网页中:
1 | <head> |
共有两个版本的 jQuery 可供下载:一份是精简过的,另一份是未压缩的(供调试或阅读)。
这两个版本都可从 jQuery.com 下载。
Google 和 Microsoft 对 jQuery 的支持都很好。
如果不愿意在自己的计算机上存放 jQuery 库,那么可以从 Google 或 Microsoft 加载 CDN jQuery 核心文件。
使用 Google 的 CDN
1 | <head> |
使用 Microsoft 的 CDN
1 | <head> |
jQuery 语法
jQuery 的核心:$ 符号
jQuery 最显著的标志是全局变量 $,也可使用
jQuery 替代,两者完全等价,但是肯定还是用方便的
$是 jQuery 的核心函数,用于选择 DOM
元素、创建元素或执行其他操作。
1 | // 两种写法等价 |
选择器:获取 DOM 元素
jQuery 选择器语法与 CSS 选择器基本一致,用于快速定位 DOM 元素,返回一个jQuery 对象(包含匹配的 DOM 元素集合)。
基础选择器
| 选择器 | 说明 | 示例 |
|---|---|---|
#id |
通过 ID 选择元素 | $("#box") 选择 ID 为 box 的元素 |
.class |
通过类名选择元素 | $(".item") 选择所有类为 item 的元素 |
element |
通过标签名选择元素 | $("div") 选择所有 <div> 元素 |
* |
选择所有元素 | $("*") 选择页面中所有元素 |
selector1, selector2 |
多选择器(并列) | $("div, p") 选择所有 <div> 和
<p> |
层级选择器
| 选择器 | 说明 | 示例 |
|---|---|---|
parent child |
选择父元素下的所有子元素(后代) | $("ul li") 选择 <ul> 下所有
<li> |
parent > child |
选择父元素的直接子元素 | $("ul > li") 选择 <ul> 的直接子
<li> |
prev + next |
选择紧邻前一个元素的后一个元素 | $("h2 + p") 选择 <h2> 后的第一个
<p> |
prev ~ siblings |
选择前一个元素后的所有兄弟元素 | $("h2 ~ p") 选择 <h2> 后的所有
<p> |
过滤选择器(以 : 开头)
| 选择器 | 说明 | 示例 |
|---|---|---|
:first |
选择第一个元素 | $("li:first") 选择第一个 <li> |
:last |
选择最后一个元素 | $("li:last") 选择最后一个 <li> |
:eq(index) |
选择索引为 index 的元素(从 0 开始) |
$("li:eq(2)") 选择索引为 2 的
<li> |
:gt(index) |
选择索引大于 index 的元素 |
$("li:gt(1)") 选择索引 >1 的
<li> |
:lt(index) |
选择索引小于 index 的元素 |
$("li:lt(3)") 选择索引 <3 的
<li> |
:not(selector) |
排除符合 selector 的元素 |
$("li:not(.active)") 选择不含 active 类的
<li> |
:odd |
选择索引为奇数的元素 | $("tr:odd") 选择表格中索引为奇数的行 |
:even |
选择索引为偶数的元素 | $("tr:even") 选择表格中索引为偶数的行 |
选择器使用
演示一下选择器的使用
1 | <ul> |
- jQuery 对象:通过
$()选择的元素集合,是 jQuery 包装后的对象,只能调用 jQuery 方法(如text()、css())。 - DOM 对象:原生 JavaScript 获取的元素(如
document.getElementById()),只能调用原生方法(如innerText、style)。
他们互相也能转换
jQuery 对象 → DOM 对象:通过索引或 get(index) 方法
1 | const $div = $("div"); // jQuery 对象 |
DOM 对象 → jQuery 对象:用 $() 包装
1 | const domP = document.querySelector("p"); // DOM 对象 |
常用 DOM 操作方法
jQuery 提供了简洁的方法操作元素内容、属性、样式等内容
内容操作
| 方法 | 说明 | 示例 |
|---|---|---|
text() |
获取 / 设置元素的文本内容(纯文本,忽略 HTML) | $("p").text()
获取文本;$("p").text("新文本") 设置文本 |
html() |
获取 / 设置元素的 HTML 内容(包含标签) | $("div").html() 获取
HTML;$("div").html("<b>粗体</b>") 设置
HTML |
val() |
获取 / 设置表单元素的值(如 input、select) | $("input").val()
获取值;$("input").val("用户名") 设置值 |
属性操作
| 方法 | 说明 | 示例 |
|---|---|---|
attr(name, value) |
获取 / 设置元素的属性(如 src、href) | $("img").attr("src") 获取
src;$("img").attr("src", "pic.jpg") 设置 src |
removeAttr(name) |
移除元素的属性 | $("a").removeAttr("target") 移除 target 属性 |
prop(name, value) |
获取 / 设置元素的布尔属性(如 checked、disabled) | $("input:checkbox").prop("checked")
判断是否勾选;$("input").prop("disabled", true)
禁用输入框 |
注意:布尔属性(如
checked、disabled)推荐用prop(),普通属性用attr()。
样式操作
| 方法 | 说明 | 示例 |
|---|---|---|
css(property, value) |
获取 / 设置元素的 CSS 样式 | $("div").css("color")
获取颜色;$("div").css("color", "red") 设置颜色为红色 |
addClass(className) |
为元素添加类名 | $("li").addClass("active") 给 <li>
添加 active 类 |
removeClass(className) |
移除元素的类名 | $("li").removeClass("active") 移除 active
类 |
toggleClass(className) |
切换类名(存在则移除,不存在则添加) | $("li").toggleClass("active") 切换 active
类 |
hasClass(className) |
判断元素是否包含指定类名(返回布尔值) | $("li").hasClass("active") 检查是否有
active 类 |
操作示例
1 | <div id="box">初始文本</div> |
jQuery添加/删除元素
添加元素(插入新元素到页面中)
添加元素通常分为两步:
- 创建元素:用
$()语法创建新的 jQuery 元素(如$("<div>新元素</div>"))。 - 插入元素:通过特定方法将创建的元素插入到页面的指定位置(如父元素内部、兄弟元素前后等)。
内部插入(将新元素添加到目标元素的内部)
| 方法 | 说明 | 示例(假设已有
<ul id="list"><li>原元素</li></ul>) |
|---|---|---|
append(content) |
向目标元素内部末尾添加内容(作为最后一个子元素) | $("#list").append("<li>新元素1</li>") →
<ul><li>原元素</li><li>新元素1</li></ul> |
prepend(content) |
向目标元素内部开头添加内容(作为第一个子元素) | $("#list").prepend("<li>新元素0</li>") →
<ul><li>新元素0</li><li>原元素</li></ul> |
appendTo(target) |
把当前元素添加到 target
元素的内部末尾(与 append 方向相反) |
$(“ |
外部插入(将新元素添加到目标元素的外部,作为兄弟元素)
| 方法 | 说明 | 示例(假设已有
<div id="box">原元素</div>) |
|---|---|---|
after(content) |
在目标元素后面添加内容(作为下一个兄弟元素) | $("#box").after("<p>后面的元素</p>") →
<div>原元素</div><p>后面的元素</p> |
before(content) |
在目标元素前面添加内容(作为上一个兄弟元素) | $("#box").before("<p>前面的元素</p>") →
<p>前面的元素</p><div>原元素</div> |
insertAfter(target) |
把当前元素添加到 target 元素的后面(与
after 方向相反) |
$(“ |
1 | <div id="container"> |
删除元素(移除页面中的已有元素)
删除元素的方法主要用于移除不需要的 DOM 元素,包括移除自身、清空内容等。
| 方法 | 说明 | 示例(假设已有
<ul id="list"><li>1</li><li>2</li><li>3</li></ul>) |
|---|---|---|
remove(selector) |
移除匹配的元素自身及所有子元素(可选参数
selector 用于筛选要删除的元素) |
$("#list li:eq(1)").remove() → 移除索引为 1 的
li(即第二个 li) |
empty() |
清空元素的所有子元素,但保留元素自身 | $("#list").empty() →
<ul id="list"></ul>(ul
保留,子元素被删除) |
detach(selector) |
移除匹配的元素(与 remove
类似),但保留元素的事件和数据(可重新插入使用) |
const $li = $("#list li").detach(); → 后续可通过
$("#list").append($li) 重新添加 |
删除元素综合用法
1 | <ul id="fruitList"> |
克隆元素
clone()
方法用于复制元素,常配合添加方法使用(如复制一个按钮并插入到其他位置)。
| 方法 | 说明 | 示例 |
|---|---|---|
clone(deep) |
克隆元素,deep 为布尔值(默认 false):-
false:仅克隆元素本身,不克隆事件和子元素的事件-
true:克隆元素、子元素及所有绑定的事件 |
$(".btn").clone(true).appendTo("body") →
复制按钮并添加到页面,且保留点击事件 |
1 | <button class="btn">点击我</button> |
事件处理
jQuery 简化了事件绑定,提供了统一的事件处理方法,支持多种事件(点击、鼠标移动、表单提交等)。
基础事件绑定
| 方法 | 说明 | 示例 |
|---|---|---|
click(fn) |
绑定点击事件 | $("button").click(function() { ... }) |
dblclick(fn) |
绑定双击事件 | $("div").dblclick(function() { ... }) |
mouseenter(fn) |
鼠标进入事件 | $("li").mouseenter(function() { ... }) |
mouseleave(fn) |
鼠标离开事件 | $("li").mouseleave(function() { ... }) |
mousedown(fn) |
鼠标按下时触发 | |
mouseup(fn) |
鼠标松开时触发 | |
mouseout(fn) |
鼠标离开元素或其子元素时触发(会冒泡) | |
mouseover(fn) |
鼠标进入元素或其子元素时触发(会冒泡) | |
submit(fn) |
表单提交事件 | $("form").submit(function() { ... }) |
select(fn) |
文本被选中时触发 | |
input(fn) |
元素值实时变化时触发 | |
keydown(fn) |
键盘按键按下时触发(包括功能键,如 Ctrl、Shift,持续按住会重复触发) | |
keyup(fn) |
键盘按键松开时触发 | |
keypress(fn) |
键盘按键按下并释放时触发(仅支持字符键,不支持功能键,如 Ctrl、Alt) | |
on(event, fn) |
通用事件绑定(推荐) | $("button").on("click", function() { ... }) |
1 | <input type="text" id="search" placeholder="输入搜索内容..."> |
事件解绑
off(event):移除指定事件的绑定1
2
3
4
5
6
7
8// 绑定点击事件
function handleClick() {
console.log("点击了按钮");
}
$("button").on("click", handleClick);
// 解绑点击事件
$("button").off("click", handleClick);
事件对象
事件处理函数中可接收一个事件对象
e,类似Java异常,包含事件相关信息(如点击位置、触发元素等):
1 | $("button").click(function(e) { |
文档就绪事件
事实上,我们应该把 jQuery 函数写到一个 document ready 函数中:
1 | $(document).ready(function(){ |
这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码,即在 DOM 加载完成后才可以对 DOM 进行操作。
如果在文档没有完全加载之前就运行函数,操作可能失败。
但是这个写法可以被简化
1 | $(function(){ |
事件处理示例
1 | <button id="btn">点击我</button> |
动画效果
jQuery 内置了多种动画方法,可快速实现元素的显示、隐藏、滑动、淡入淡出等效果。
| 方法 | 说明 | 示例 |
|---|---|---|
show(speed) |
显示元素(可指定速度,如 “slow”、“fast” 或毫秒) | $("div").show(1000) 1 秒内显示元素 |
hide(speed) |
隐藏元素 | $("div").hide("slow") 缓慢隐藏元素 |
toggle(speed) |
切换元素显示 / 隐藏状态 | $("div").toggle(500) 500 毫秒内切换 |
slideDown(speed) |
向下滑动显示元素 | $("ul").slideDown("fast") 快速下滑显示 |
slideUp(speed) |
向上滑动隐藏元素 | $("ul").slideUp(800) 800 毫秒上滑隐藏 |
slideToggle(speed) |
切换滑动状态 | $("ul").slideToggle() 切换滑动 |
fadeIn(speed) |
淡入显示元素 | $("img").fadeIn(1000) 1 秒淡入 |
fadeOut(speed) |
淡出隐藏元素 | $("img").fadeOut("slow") 缓慢淡出 |
animate(properties, speed) |
自定义动画(修改 CSS 属性) | $("div").animate({ left: "200px" }, 1000) 1 秒内移动到
left:200px |
1 | <div id="box" style="width: 100px; height: 100px; background: red; display: none;"></div> |
隐藏和显示非常有用,可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素
1 |
|
jQuery链
jQuery 方法执行后通常会返回当前 jQuery 对象,因此可链式调用多个方法,允许我们在相同的元素上运行多条 jQuery 命令,简化代码:
这样的话,浏览器就不必多次查找相同的元素。
1 | // 链式编程:选择元素 → 添加类 → 设置文本 → 淡入显示 |
jQuery 尺寸
元素尺寸(宽高)相关方法
jQuery 提供了 4 个核心方法用于获取元素的宽高,它们的区别主要在于是否包含内边距(padding)、边框(border) 和外边距(margin)。
| 方法 | 说明 | 计算公式(以宽度为例) |
|---|---|---|
width() |
获取 / 设置元素的内容宽度(不包含 padding、border、margin) | 宽度 = 内容区宽度 |
height() |
获取 / 设置元素的内容高度(同上) | 高度 = 内容区高度 |
innerWidth() |
获取元素的内容宽度 + 内边距(padding)(不包含 border、margin) | 宽度 = 内容区宽度 + padding-left + padding-right |
innerHeight() |
获取元素的内容高度 + 内边距(padding)(同上) | 高度 = 内容区高度 + padding-top + padding-bottom |
outerWidth(includeMargin) |
获取元素的内容宽度 + padding + border(可选参数
includeMargin=true 时再加上 margin) |
宽度 = 内容区宽度 + padding + border +(margin 可选) |
outerHeight(includeMargin) |
获取元素的内容高度 + padding + border(同上) | 高度 = 内容区高度 + padding + border +(margin 可选) |
假设 HTML 元素样式如下:
1 | <div id="box" style=" |
通过 jQuery 方法获取的尺寸如下:
1 | const $box = $("#box"); |
而且width() 和 height()
方法不仅能获取尺寸,还能设置元素的宽高(设置时仅影响内容区尺寸):
1 | // 设置宽度为 200px |
窗口 / 文档尺寸
除了元素尺寸,jQuery 还提供了获取浏览器窗口和文档(页面) 尺寸的方法,常用于响应式布局或全屏效果。
| 方法 / 属性 | 说明 | 示例 |
|---|---|---|
$(window).width() |
浏览器窗口的可视区域宽度(不含浏览器边框、工具栏,包含滚动条) | $(window).width() → 如 1366px |
$(window).height() |
浏览器窗口的可视区域高度(同上) | $(window).height() → 如 768px |
$(document).width() |
整个文档(页面)的实际宽度(内容的总宽度,可能超过窗口宽度) | $(document).width() → 如 1920px |
$(document).height() |
整个文档(页面)的实际高度(内容的总高度,可能超过窗口高度) | $(document).height() → 如 3000px |
监听窗口尺寸变化
1 | // 初始获取窗口尺寸 |
滚动尺寸(滚动距离)
用于获取元素或页面的滚动距离(如页面滚动了多少像素,滚动条位置等)。
| 方法 | 说明 | 示例场景 |
|---|---|---|
scrollTop() |
获取 / 设置元素或文档的垂直滚动距离(向上滚动的像素数) | 页面滚动到顶部:$(window).scrollTop(0) |
scrollLeft() |
获取 / 设置元素或文档的水平滚动距离(向左滚动的像素数) | 滚动到页面最左侧:$(window).scrollLeft(0) |
1 | // 1. 获取页面滚动距离(文档的滚动距离需通过 $(window) 或 $(document) 获取) |
位置相关方法(元素坐标)
除了尺寸,jQuery 还提供了获取元素位置的方法,用于定位元素(如弹窗居中、拖拽等)。
| 方法 | 说明 | 示例(假设元素距离文档顶部 100px,左侧 200px) |
|---|---|---|
offset() |
获取元素相对于文档(页面)左上角的坐标(返回
{ top: 数值, left: 数值 }),与父元素无关 |
$box.offset() →
{ top: 100, left: 200 } |
position() |
获取元素相对于最近的已定位祖先元素(position≠static) 的坐标(无定位祖先则相对于文档) | 若父元素是定位元素且距离文档顶部 50px,则
$box.position().top 为 50px(100-50) |
位置方法对比
1 | <div class="parent" style="position: relative; top: 50px; left: 50px;"> |
1 | const $child = $(".child"); |
应用:弹窗居中显示
利用 offset() 和窗口尺寸实现弹窗在可视区域居中:
1 | function centerDialog() { |
jQuery遍历
和我们之前讲的 DOM 树的遍历一样,jQuery也可以进行遍历,用于根据其相对于其他元素的关系来”查找”(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达期望的元素为止。
- 起点:通过选择器选中的初始元素(jQuery 对象),如
$("ul")。 - 方向:向上(祖先)、向下(后代)、同级(兄弟)。
- 结果:返回新的 jQuery 对象(可链式调用其他方法)。
向下遍历(查找后代元素)
从当前元素出发,查找其内部的子元素、孙元素等后代节点。
| 方法 | 说明 | 示例(HTML 结构见下方) |
|---|---|---|
children(selector) |
只查找直接子元素(不包含孙元素),可选
selector 筛选。 |
$("ul").children("li.active") → 找 ul 直接子元素中类为
active 的 li |
find(selector) |
查找所有后代元素(包含子、孙、曾孙等),必须传
selector。 |
$("ul").find("span") → 找 ul 中所有后代 span 元素 |
基础 HTML 结构(用于后续示例)
1 | <div class="container"> |
向下遍历
1 | // 1. children():只找直接子元素 |
向上遍历(查找祖先元素)
从当前元素出发,查找其父元素、祖父元素等祖先节点。
| 方法 | 说明 | 示例 |
|---|---|---|
parent(selector) |
只查找直接父元素(上一级),可选
selector 筛选。 |
$("li.active").parent() → 找 active 类 li
的直接父元素(ul) |
parents(selector) |
查找所有祖先元素(父、祖父、根元素),可选
selector 筛选。 |
$("span").parents("div") → 找 span 的所有 div
祖先(container 类的 div) |
parentsUntil(selector) |
查找两个元素之间的所有祖先(不包含终点)。 | $("span").parentsUntil("body") → 找 span 到 body
之间的所有祖先(div、ul、li 等) |
closest(selector) |
查找最近的匹配祖先(包括自身),从当前元素向上找,找到第一个匹配的就停止。 | $("span").closest("li") → 找 span 最近的 li 祖先(Item1
或 Item2 的 li) |
向上遍历示例,例子还是上面那个
1 | // 1. parent():直接父元素 |
同级遍历(查找兄弟元素)
在同一层级中,查找当前元素的前序或后序兄弟元素
| 方法 | 说明 | 示例 |
|---|---|---|
siblings(selector) |
查找所有兄弟元素(不包含自身),可选
selector 筛选。 |
$("li.active").siblings() → active 类 li 的所有兄弟
li(Item1、Item3) |
next(selector) |
查找下一个兄弟元素,可选 selector
筛选。 |
$("li:first").next() → 第一个 li
的下一个兄弟(Item2) |
nextAll(selector) |
查找当前元素之后的所有兄弟元素,可选
selector 筛选。 |
$("li:first").nextAll() → 第一个 li
之后的所有兄弟(Item2、Item3) |
nextUntil(selector) |
查找当前元素到目标元素之间的所有兄弟(不包含终点)。 | $("li:first").nextUntil("li:last") → 第一个 li
到最后一个 li 之间的兄弟(Item2) |
prev(selector) |
查找上一个兄弟元素,可选 selector
筛选。 |
$("li:last").prev() → 最后一个 li
的上一个兄弟(Item2) |
prevAll(selector) |
查找当前元素之前的所有兄弟元素,可选
selector 筛选。 |
$("li:last").prevAll() → 最后一个 li
之前的所有兄弟(Item1、Item2) |
prevUntil(selector) |
查找当前元素到目标元素之间的所有前序兄弟(不包含终点)。 | $("li:last").prevUntil("li:first") → 最后一个 li
到第一个 li 之间的兄弟(Item2) |
1 | // 1. siblings():所有兄弟 |
筛选遍历(从匹配集中筛选元素)
对已选中的元素集合进行二次筛选,缩小范围。
| 方法 | 说明 | 示例 |
|---|---|---|
first() |
选取集合中的第一个元素。 | $("li").first() → 第一个 li(Item1) |
last() |
选取集合中的最后一个元素。 | $("li").last() → 最后一个 li(Item3) |
eq(index) |
选取集合中索引为 index 的元素(从 0 开始)。 | $("li").eq(1) → 索引为 1 的 li(Item2) |
filter(selector) |
筛选出符合 selector 条件的元素(或通过函数返回 true 的元素)。 | $("li").filter(".active") → 类为 active 的
li(Item2) |
not(selector) |
筛选出不符合 selector 条件的元素(与 filter 相反)。 | $("li").not(".active") → 不含 active 类的
li(Item1、Item3) |
slice(start, end) |
选取集合中从 start 到 end(不包含 end)的元素(支持负索引)。 | $("li").slice(0, 2) → 索引 0 到 1 的
li(Item1、Item2) |
遍历也支持链式调用
jQuery 遍历方法返回的是新的 jQuery 对象,因此可以链式调用,快速实现复杂的查找逻辑。
1 | // 需求:找到 ul 中,类为 active 的 li 的下一个兄弟元素中的 span |
jQuery Ajax
jQuery 封装了原生 XMLHttpRequest,提供了简洁的
Ajax 方法用于异步请求数据,支持 GET、POST
等请求方式,以及请求前 / 后的回调处理。
说实话,jQuery Ajax 现在没啥人用了, fetch API 或
axios 太王朝了
jQuery Ajax
核心方法:$.ajax()
$.ajax() 是最基础、最灵活的 Ajax
方法,几乎能配置所有请求参数。语法结构:
1 | $.ajax({ |
| 参数名 | 说明 | 示例(基于 context7 接口) |
|---|---|---|
url |
接口地址(相对路径或绝对路径,需与当前页面同源,或后端配置跨域) | "/context7/api/user" 或
"https://api.context7.com/data" |
type |
请求方法(HTTP 动词),大小写不敏感 | "GET"(默认)、"POST"、"PUT"、"DELETE" |
data |
发送的数据:- GET 请求:自动拼接为 URL
参数(?key=value)- POST 请求:作为请求体发送 |
{ id: 1, name: "张三" } 或
"id=1&name=张三" |
dataType |
预期服务器返回的数据格式,jQuery 会自动解析:-
"json":解析为 JSON 对象-
"html":作为字符串返回- "text":纯文本 |
"json"(最常用,后端返回 JSON 时) |
contentType |
请求体的 MIME 类型:- 默认
application/x-www-form-urlencoded(表单格式)- 发送 JSON
时用 application/json |
contentType: "application/json" |
success |
成功回调函数,参数为解析后的响应数据 | success: function(res) { console.log(res.data); } |
error |
失败回调函数,参数:- xhr:XMLHttpRequest 对象-
status:错误类型(如 “error”)-
error:错误信息 |
error: function(xhr) { console.log(xhr.status); } |
假设 ergoutreegal 有一个获取用户列表的接口
"/api/users",返回 JSON 数据:
1 | // 发送 GET 请求获取用户列表 |
假设我们需要向 ergoutreegal的 "/api/user"
接口提交用户信息
1 | // 准备提交的数据 |
POST 发送 JSON 数据时,需设置
contentType: "application/json",并通过JSON.stringify()转换数据格式;若发送表单数据(默认格式),可直接传对象data: userData,无需转换。
可通过 xhr.abort() 中断请求(如用户点击取消按钮):
1 | const xhr = $.ajax({ url: "/api/data", success: function() {} }); |
简化的 Ajax 方法
jQuery 基于 $.ajax()
封装了几个常用快捷方法,减少配置代码
$.get(url, [data], [success], [dataType])
快速发送 GET 请求:
1 | // 语法:$.get(接口地址, 参数, 成功回调, 数据类型) |
$.post(url, [data], [success], [dataType])
快速发送 POST 请求:
1 | // 语法:$.post(接口地址, 参数, 成功回调, 数据类型) |
- POST 发送 JSON 时,必须用
JSON.stringify()转换数据,并设置contentType: "application/json"。 - 若后端返回 JSON
格式错误(如语法错误),
dataType: "json"会导致error回调触发。
$.getJSON(url, [data], [success])
专门用于获取 JSON 数据的 GET 请求(等价于
$.get(..., "json")):
1 | // 直接获取 JSON 数据,无需指定 dataType |
全局 Ajax 事件(监听所有请求)
通过 $(document).on() 绑定全局事件,可统一处理所有 Ajax
请求的状态(如加载中显示动画):
| 全局事件名 | 说明 |
|---|---|
ajaxStart |
当第一个 Ajax 请求开始时触发(可显示加载动画) |
ajaxStop |
当所有 Ajax 请求完成时触发(可隐藏加载动画) |
ajaxSuccess |
任何一个 Ajax 请求成功时触发 |
ajaxError |
任何一个 Ajax 请求失败时触发 |
全局加载动画示例
1 | // 显示加载动画 |
跨域请求(CORS)
若请求的接口与当前页面不同源(协议、域名、端口不同),需后端配置 CORS(跨域资源共享)。jQuery 中无需额外配置,只需确保后端响应头包含:
1 | Access-Control-Allow-Origin: * // 允许所有域名访问(生产环境需指定具体域名) |
示例:请求跨域的 context7 接口
1 | $.get("https://api.context7.com/cross/data", function(data) { |







