✅ 所有jQuery代码必须写在页面加载函数内,否则会失效!
1. 页面加载(必学核心)
$(function(){}) 【推荐最简写法】
【大白话作用】等页面的HTML结构全部加载完成后,再执行里面的代码,避免代码找不到元素而报错。
【参数说明】无参数,直接把你的所有代码写在大括号里即可。
【小白注意】这是所有jQuery代码的“家”,所有代码必须放这里面!
$(function(){
// 你的所有jQuery代码,全部写在这里面
console.log("页面加载完成,代码可以执行了");
});
$(document).ready(function(){}) 【标准写法】
【大白话作用】和上面的最简写法功能完全一样,是完整的标准写法,适合老项目兼容。
【小白注意】和上面的写法二选一即可,推荐用上面的最简写法。
$(window).on('load',function(){})
【大白话作用】等页面的所有资源(图片、视频、样式、字体)全部加载完成后,才执行代码。
【使用场景】需要获取图片的实际宽高、等视频加载完成再操作的时候用。
jQuery.noConflict()
【大白话作用】释放$符号,解决jQuery和其他JS框架的冲突(比如$符号被别的代码占用了)。
【小白示例】
// 把$换成$jq,避免冲突
var $jq = jQuery.noConflict();
$jq(function(){
$jq(".box").hide();
});
2. 元素选择器(含eq()索引超详细讲解)
✅ 选择器就是jQuery用来“找到”页面上的标签的方法,和CSS选择器用法完全一样!
$("#id名") ID选择器
【大白话作用】选中页面上id="xxx"的元素,id是唯一的,只能选中1个元素。
【小白示例】页面上有 <div id="header"></div>,就这么写:
$("#header") // 选中id为header的元素
$(".class名") 类选择器
【大白话作用】选中页面上所有class="xxx"的元素,可以选中多个。
【小白示例】页面上有 <li class="item"></li>,就这么写:
$(".item") // 选中所有class为item的元素
$("标签名") 标签选择器
【大白话作用】选中页面上所有对应的标签,比如所有div、所有p、所有li。
【小白示例】
$("div") // 选中页面所有div
$("p") // 选中页面所有p标签
$("li") // 选中页面所有li标签
🔥 eq() 索引选择器 小白超详细全解
✅ eq() 是jQuery里最常用的序号选择器,专门用来选中「第几个」元素,小白必学!
1. 基础核心:索引从0开始!
【小白必记死规则】jQuery里的序号(索引),永远是从0开始数的!
0 = 第一个元素
1 = 第二个元素
2 = 第三个元素
以此类推,第N个元素,索引就是 N-1
⚠️ 小白踩坑重灾区:不要从1开始数!比如要选第一个,必须填0,不是1!
2. 选择器写法::eq(索引)
【大白话作用】在选择器里直接写,选中匹配的元素里,指定序号的那一个。
【语法】$("选择器:eq(索引)")
【小白示例】页面有5个li标签:
$("li:eq(0)") // 选中第1个li
$("li:eq(1)") // 选中第2个li
$("li:eq(2)") // 选中第3个li
$("li:eq(4)") // 选中第5个li(最后一个)
3. 方法写法:.eq(索引)
【大白话作用】先选中一堆元素,再用eq()方法筛选出指定序号的那一个,链式调用更灵活,推荐用这种写法!
【语法】$("选择器").eq(索引)
【小白示例】
// 先选中所有li,再筛选出第2个(索引1)
$("li").eq(1).css("color", "red");
// 链式调用,先选第3个,再绑定点击事件
$(".btn").eq(2).on("click", function(){
alert("第三个按钮被点击了");
});
4. 高级用法:负数索引(倒着数)
【大白话作用】eq()里填负数,就会从最后一个元素开始倒着数!
-1 = 最后一个元素
-2 = 倒数第二个元素
-3 = 倒数第三个元素
【小白示例】
$("li:eq(-1)") // 选中最后一个li
$("li").eq(-2) // 选中倒数第二个li
5. 小白常用实战场景
场景1:给tab导航的第几个按钮加选中样式
// 给第1个tab按钮加active类
$(".tab-btn").eq(0).addClass("active");
场景2:给列表的偶数行变色
// 给第2、4、6...行(索引1、3、5...)加背景色
$("tr").eq(1).css("background", "#f5f5f5");
$("tr").eq(3).css("background", "#f5f5f5");
场景3:点击按钮,显示对应序号的内容
$(".btn").on("click", function(){
// 获取点击的按钮是第几个
var idx = $(this).index();
// 显示对应序号的内容,隐藏其他
$(".content").hide().eq(idx).show();
});
6. 小白踩坑提醒
⚠️ 索引超出范围,会选中不到任何元素,不会报错,但是代码不生效
⚠️ 永远记住索引从0开始,不是从1开始!
⚠️ 推荐用 .eq() 方法写法,比 :eq() 选择器兼容性更好,链式调用更灵活
:first / :last 首尾选择器
【大白话作用】选中第一个元素 / 最后一个元素,和 eq(0)、eq(-1) 效果一样
$("li:first") // 选中第一个li,等价于 $("li").eq(0)
$("li:last") // 选中最后一个li,等价于 $("li").eq(-1)
$("[属性名='值']") 属性选择器
【大白话作用】选中带有指定属性和值的元素,比如选中所有type="text"的输入框。
$("[type='text']") // 选中所有文本输入框
$("[href]") // 选中所有带href属性的元素
3. 属性 & 样式 & 类名操作
.attr("属性名") 获取属性
【大白话作用】获取元素的HTML属性值,比如图片的src、链接的href、标签的title。
【参数说明】括号里填要获取的属性名,返回对应的属性值。
// 获取图片的地址
var imgSrc = $("img").attr("src");
.attr("属性名", "值") 设置属性
【大白话作用】给元素设置HTML属性,修改图片地址、链接地址、自定义属性。
【参数说明】第1个参数是属性名,第2个参数是要设置的值。
// 修改图片的地址
$("img").attr("src", "new.jpg");
// 给链接设置新地址
$("a").attr("href", "https://www.baidu.com");
.prop("属性名", true/false) 表单属性操作
【大白话作用】专门用来操作表单的状态属性:复选框勾选、单选框选中、按钮禁用/启用,必须用这个方法!
【参数说明】第1个参数是属性名,第2个参数是布尔值true=选中/启用,false=取消/禁用。
// 勾选复选框
$(":checkbox").prop("checked", true);
// 禁用按钮
$("button").prop("disabled", true);
.css("样式名") 获取样式
【大白话作用】获取元素的样式值,比如颜色、宽度、高度。
// 获取元素的颜色
var color = $(".box").css("color");
.css("样式名", "值") 设置单个样式
【大白话作用】给元素设置行内样式,修改颜色、宽高、边距等。
【小白注意】带单位的样式必须写单位,比如px、%。
// 修改文字颜色为红色
$(".box").css("color", "red");
// 修改宽度为200px
$(".box").css("width", "200px");
.css({样式对象}) 设置多个样式
【大白话作用】一次性给元素设置多个样式,不用写多行代码。
$(".box").css({
"color": "red",
"width": "200px",
"height": "100px",
"background": "#eee"
});
.addClass("类名") 添加类名
【大白话作用】给元素添加一个CSS类名,通过CSS来控制样式,推荐使用这种方式,不要频繁用css()方法。
// 给元素添加show类名
$(".box").addClass("show");
.removeClass("类名") 删除类名
【大白话作用】给元素删除指定的CSS类名。
// 给元素删除show类名
$(".box").removeClass("show");
.toggleClass("类名") 切换类名
【大白话作用】元素有这个类名就删掉,没有就加上,适合做点击切换、开关效果。
// 点击按钮,切换盒子的show类名
$(".btn").click(function(){
$(".box").toggleClass("show");
});
.hasClass("类名") 判断是否有类名
【大白话作用】判断元素是否有指定的类名,返回true/false,用来做条件判断。
if($(".box").hasClass("show")){
alert("盒子是显示的");
}
4. 内容 & 元素增删改查
.html() 获取HTML内容
【大白话作用】获取元素里面的所有内容,包括HTML标签。
var content = $(".box").html();
.html("内容") 设置HTML内容
【大白话作用】给元素里面写入内容,支持HTML标签,会覆盖原来的内容。
// 给盒子写入带标签的内容
$(".box").html("
标题
这是内容
");
.text() 获取纯文本
【大白话作用】获取元素里面的纯文字,自动过滤掉HTML标签,只保留文字。
.text("文字") 设置纯文本
【大白话作用】给元素里面写入纯文字,不会识别HTML标签,安全不会被XSS攻击。
.val() 获取表单值
【大白话作用】获取输入框、下拉框、文本域里面用户输入的内容,表单专用。
// 获取输入框里用户输入的内容
var inputVal = $("input").val();
.val("内容") 设置表单值
【大白话作用】给输入框、下拉框设置默认值,自动填充内容。
// 给输入框设置默认值
$("input").val("请输入你的姓名");
.append("内容") 内部末尾追加
【大白话作用】在元素的内部最后面添加内容,不会覆盖原来的内容。
// 在ul的最后面添加一个li
$("ul").append("
新的列表项");
.prepend("内容") 内部开头添加
【大白话作用】在元素的内部最前面添加内容,不会覆盖原来的内容。
.after("内容") 同级后面添加
【大白话作用】在元素的后面,添加同级的兄弟元素。
.before("内容") 同级前面添加
【大白话作用】在元素的前面,添加同级的兄弟元素。
.remove() 删除元素
【大白话作用】把整个元素从页面上彻底删掉,包括元素本身和里面的所有内容、事件。
// 删除整个盒子
$(".box").remove();
.empty() 清空内容
【大白话作用】只清空元素里面的所有内容,保留元素本身,不会删掉元素。
5. 全部事件大全(用户交互专用)
✅ 事件就是用户做了什么操作,比如点击、输入、滑动,我们就执行对应的代码。
.on("事件名", function(){}) 【万能绑定推荐】
【大白话作用】给元素绑定事件,所有事件都能用这个方法,支持动态新增的元素,兼容性最好,推荐所有事件都用这个绑定。
【参数说明】第1个参数是事件名(小写),第2个参数是事件触发后要执行的函数。
// 给按钮绑定点击事件
$(".btn").on("click", function(){
alert("按钮被点击了");
});
鼠标事件(最常用)
【click】鼠标左键单击一下触发
【dblclick】鼠标左键快速双击触发
【mouseenter】鼠标划入元素时触发(推荐,不会冒泡卡顿)
【mouseleave】鼠标划出元素时触发(推荐,和mouseenter配对)
【mousedown】鼠标按键按下的瞬间触发
【mouseup】鼠标按键松开的瞬间触发
【mousemove】鼠标在元素内移动时持续触发
// 鼠标划入划出效果
$(".box").on("mouseenter", function(){
$(this).css("background", "red");
}).on("mouseleave", function(){
$(this).css("background", "#fff");
});
键盘事件
【keydown】键盘上任意按键按下的瞬间触发(所有按键都触发,包括回车、空格、删除)
【keypress】键盘上的字符按键按下时触发(字母、数字、符号,功能键不触发)
【keyup】键盘上的按键松开的瞬间触发
// 按下回车触发
$("input").on("keydown", function(e){
if(e.keyCode == 13){
alert("你按下了回车");
}
});
表单事件
【focus】输入框获得焦点时触发(用户点击输入框,光标进去了)
【blur】输入框失去焦点时触发(用户点击别处,光标离开输入框)
【input】输入框内容实时变化时触发(用户一边打字一边触发)
【change】输入框/下拉框/单选框内容改变,且失去焦点时触发
【submit】表单提交时触发
【reset】表单重置时触发
窗口&页面事件
【scroll】页面滚动条滚动时触发
【resize】浏览器窗口大小改变时触发
.one("事件名", function(){}) 一次性事件
【大白话作用】事件只会执行一次,执行完之后自动失效,再也不会触发。
// 按钮只会触发一次点击
$(".btn").one("click", function(){
alert("只会弹一次");
});
.off("事件名") 解绑事件
【大白话作用】取消元素上已经绑定的事件,解绑之后,事件就不会再触发了。
// 取消按钮的点击事件
$(".btn").off("click");
// 取消元素上的所有事件
$(".box").off();
6. 动画 & 停止动画(防抖动必备)
.show(时间, 回调函数) 显示元素
【大白话作用】让隐藏的元素显示出来,带动画效果。
【参数说明】
1. 时间:动画执行的时长,单位是毫秒(1秒=1000毫秒),常用值:0=瞬间显示、200=快、300=标准、500=慢、1000=1秒
2. 回调函数:动画执行完之后,要执行的代码,可选,不需要可以不写。
// 0.3秒显示盒子
$(".box").show(300);
.hide(时间, 回调函数) 隐藏元素
【大白话作用】让显示的元素隐藏起来,带动画效果,参数规则和show()完全一样。
.toggle(时间, 回调函数) 切换显示隐藏
【大白话作用】元素显示就隐藏,隐藏就显示,一键切换,参数规则和show()一样。
.fadeIn(时间, 回调函数) 淡入
【大白话作用】元素从透明慢慢变成不透明,柔和显示,只有透明度动画,不改变宽高,适合弹窗、浮层。
【参数说明】时间规则和show()完全一样,推荐填300。
.fadeOut(时间, 回调函数) 淡出
【大白话作用】元素从不透明慢慢变成透明,柔和隐藏,参数规则和fadeIn()一样。
.slideDown(时间, 回调函数) 下拉展开
【大白话作用】元素高度从0慢慢展开到完整高度,向下拉开,适合下拉菜单、折叠面板。
【参数说明】时间推荐填200-300。
.slideUp(时间, 回调函数) 上拉收起
【大白话作用】元素高度从完整慢慢收缩到0,向上收起,参数规则和slideDown()一样。
.slideToggle(时间, 回调函数) 滑动切换
【大白话作用】元素收起就展开,展开就收起,一键切换,适合折叠菜单。
.stop(清空队列, 跳到结尾) 停止动画【防抖动必备】
【大白话作用】停止元素上正在执行的动画,解决鼠标快速来回滑动、动画排队、卡顿抖动的问题,动画前必须加这个!
【参数说明】
1. 清空队列:true=清空所有排队的动画,彻底停止;false=只停止当前动画,后面排队的动画继续执行(默认)
2. 跳到结尾:true=直接瞬间跳到动画的最终状态;false=停在动画当前的位置(默认)
【小白万能写法】.stop(true, false) 99%的场景都用这个!
// 防抖动的下拉菜单,不会卡顿
$(".menu").on("mouseenter", function(){
$(this).find(".sub").stop(true,false).slideDown(300);
}).on("mouseleave", function(){
$(this).find(".sub").stop(true,false).slideUp(300);
});
.finish() 结束所有动画
【大白话作用】不管动画执行到哪,直接瞬间完成所有动画,元素直接定格在动画的最终样式。
.animate({样式}, 时间, 回调函数) 自定义动画
【大白话作用】自定义复杂动画,宽高、定位、透明度、边距都可以做动画变化。
【参数说明】第1个参数是要变化的样式对象,第2个参数是动画时间。
// 盒子向右移动100px,同时变宽
$(".box").animate({
"left": "100px",
"width": "300px"
}, 500);
7. AJAX 全套用法(和后台交互)
✅ AJAX就是和后台服务器交互,获取数据、提交数据,不用刷新页面。
$.ajax({}) 【基础万能写法】
【大白话作用】AJAX的底层方法,所有参数都可以自定义,功能最全,最常用。
【参数详细说明】
url:请求的后台接口地址(必填)
type:请求方式,GET=获取数据,POST=提交数据(必填)
data:要传给后台的参数,对象格式
dataType:后台返回的数据格式,一般填json
async:是否异步,true=异步(默认),false=同步(本地用可以避免跨域)
success:请求成功后执行的函数,参数res就是后台返回的数据
error:请求失败后执行的函数
$.ajax({
url: "https://api.example.com/getData",
type: "GET",
data: { id: 1, name: "test" },
dataType: "json",
async: false, // 关闭异步,本地不跨域
success: function(res){
console.log("请求成功", res);
},
error: function(err){
console.log("请求失败", err);
}
});
$.get(url, data, 成功回调) GET简写
【大白话作用】专门用来从后台获取数据的简写方法,代码更短。
【参数说明】
url:接口地址(必填)
data:传给后台的参数,可选
成功回调:请求成功后执行的函数
$.get("https://api.example.com/getData", {id:1}, function(res){
console.log("拿到数据了", res);
});
$.post(url, data, 成功回调) POST简写
【大白话作用】专门用来向后台提交数据的简写方法,比如登录、注册、提交表单。
【参数说明】和$.get()完全一样。
$.getJSON(url, data, 成功回调) 获取JSON数据
【大白话作用】专门用来获取JSON格式的数据,自动解析JSON,不用手动转换。
$.ajaxSetup({}) 全局AJAX配置
【大白话作用】给所有AJAX请求统一设置默认参数,不用每个请求都重复写。
// 全局关闭异步,统一设置json格式
$.ajaxSetup({
async: false,
dataType: "json"
});
.serialize() 表单序列化
【大白话作用】一键获取表单里所有输入框的内容,自动拼接成后台需要的格式,不用一个一个获取输入框的值。
// 提交表单
$("form").on("submit", function(e){
e.preventDefault(); // 阻止默认刷新
var formData = $(this).serialize(); // 一键获取表单所有数据
$.post("https://api.example.com/submit", formData, function(res){
alert("提交成功");
});
});
8. 遍历 & 索引详解(批量操作)
.each(function(index, item){}) 循环遍历
【大白话作用】循环遍历选中的多个元素,给每个元素做批量操作,比如给所有li改样式、给所有图片加地址。
【参数详细说明】
index:索引,当前遍历到的是第几个元素,从0开始数(0=第一个,1=第二个)
item:当前遍历到的元素,是原生DOM对象,要转成jQuery对象用$(this)或者$(item)
【小白示例】
// 给所有li加上序号,改颜色
$("li").each(function(index, item){
// index 就是当前是第几个li
$(this).text("第" + (index+1) + "个列表项");
$(this).css("color", "blue");
});
索引小白必懂核心规则
【大白话】jQuery里的所有索引,永远都是从0开始数的!
0 = 第一个元素
1 = 第二个元素
2 = 第三个元素
以此类推,第N个元素,索引就是 N-1
eq() 和 index() 的区别(小白必看)
【eq()】:通过索引找元素 → 你告诉它序号,它给你对应的元素
【index()】:通过元素找索引 → 你给它一个元素,它告诉你这个元素是第几个(序号)
// eq():找第2个li
var $li = $("li").eq(1);
// index():找这个li是第几个
var idx = $li.index(); // 返回1
.index() 获取元素的索引
【大白话作用】获取当前元素在它的兄弟元素中的位置,也就是序号,比如点击li,知道用户点击了第几个。
// 点击li,弹出是第几个
$("li").on("click", function(){
var idx = $(this).index();
alert("你点击了第" + (idx+1) + "个");
});
层级关系查找
【parent()】找到当前元素的直接父级元素
【parents()】找到当前元素的所有上级祖先元素
【children()】找到当前元素的直接子元素
【find("选择器")】找到当前元素里面所有符合选择器的后代元素
【siblings()】找到当前元素的所有同级兄弟元素
【next()】找到当前元素的下一个兄弟元素
【prev()】找到当前元素的上一个兄弟元素
9. 常用工具方法
$.trim("字符串") 去除首尾空格
【大白话作用】去掉字符串开头和结尾的空格,用户输入内容的时候用,避免多余空格影响判断。
var str = " 你好 ";
var newStr = $.trim(str); // 结果:"你好"
$.isArray(对象) 判断是否是数组
【大白话作用】判断一个变量是不是数组,返回true/false。
$.isFunction(对象) 判断是否是函数
【大白话作用】判断一个变量是不是函数,返回true/false。
$.extend() 合并对象
【大白话作用】把多个对象合并成一个对象,常用在配置参数合并。
.width() / .height() 获取元素宽高
【大白话作用】获取元素的内容宽度/高度,不包含内边距和边框。
.innerWidth() / .innerHeight()
【大白话作用】获取元素的宽度/高度,包含内边距,不包含边框。
.outerWidth() / .outerHeight()
【大白话作用】获取元素的完整宽度/高度,包含内边距+边框,布局常用。
$(window).scrollTop() 获取页面滚动距离
【大白话作用】获取页面滚动条向下滚动了多少像素,用来做回到顶部、导航吸顶效果。
// 滚动页面,显示回到顶部按钮
$(window).on("scroll", function(){
var top = $(this).scrollTop();
if(top > 500){
$(".back-top").show();
}else{
$(".back-top").hide();
}
});
$(window).width() / $(window).height()
【大白话作用】获取浏览器窗口的宽度和高度。