jQuery 入门教程:现代开发者的 jQuery 指南
一、jQuery 的定位
jQuery 统治了前端开发十余年(2006-2016),它解决的核心痛点是:
- 浏览器兼容:统一的 API 抹平 IE6/7/8/9 与 Chrome/Firefox 的差异
- 简洁的 DOM 操作:
$(".class") 比 document.querySelectorAll 短且强大
- AJAX 简化:
$.ajax() 比原生 XMLHttpRequest 友好得多
- 动画:内置
fade、slide、animate
现在(2024年),原生 JavaScript 已足够好用,但 jQuery 仍然有价值:维护遗留项目、WordPress/Shopify 主题、快速原型、Bootstrap 5 之前版本的依赖。
二、核心选择器
$("#id")
$(".class")
$("div")
$("div, span")
$("div p")
$("div > p")
$("div + p")
$("li:first")
$("li:last")
$("li:eq(2)")
$("li:contains('文字')")
$("input:checked")
$("[data-id]")
$("[data-id='42']")
$("[href^='https']")
三、DOM 操作
$("#title").text("新标题"); // textContent
$("#content").html("<b>加粗</b>"); // innerHTML
$("input").val("默认值"); // value
$("img").attr("src", "new.jpg"); // 属性
$("div").css("color", "red"); // 单一样式
$("div").css({ color: "red", fontSize: "20px" }); // 多样式
$("div").addClass("active");
$("div").removeClass("old");
$("div").toggleClass("hidden");
$("#list").append("<li>新项</li>"); // 末尾
$("#list").prepend("<li>首项</li>"); // 开头
$("<p>").text("Hello").appendTo("#container");
$(".obsolete").remove(); // 彻底删除
$(".temp").empty(); // 保留元素,清空内容
四、事件处理
$("#btn").on("click", function (e) {
e.preventDefault();
console.log(this); // DOM 元素(不是 jQuery 对象)
console.log($(this)); // jQuery 对象
});
$("#list").on("click", ".item", function () {
$(this).toggleClass("selected");
});
$("#btn").one("click", function () {
console.log("只触发一次");
});
$("#btn").trigger("click");
$("#btn").click(fn);
$("input").keydown(fn);
$("form").submit(fn);
$("#el").hover(fnEnter, fnLeave);
五、AJAX
$.ajax({
url: "/api/users",
method: "POST",
contentType: "application/json",
data: JSON.stringify({ name: "张三" }),
headers: { Authorization: "Bearer token" },
success: function (data) { },
error: function (jqXHR, status, error) { },
});
$.get("/api/users", { page: 1 }, function (data) {});
$.post("/api/users", { name: "张三" }, function (data) {});
$.getJSON("/api/config.json", function (config) {});
$.ajax({ url: "/api/data" })
.done((data) => console.log(data))
.fail((jqXHR) => console.error(jqXHR.status))
.always(() => console.log("完成"));
六、动画
$("#box").fadeIn(400);
$("#box").fadeOut(400);
$("#box").slideDown(300);
$("#box").slideUp(300);
$("#box").animate({
width: "300px",
opacity: 0.5,
}, 500, function () {
console.log("动画完成!");
});
$("#box")
.slideUp(300)
.delay(500)
.slideDown(300);
七、实用技巧
防抖搜索
let searchTimer;
$("#search").on("input", function () {
clearTimeout(searchTimer);
searchTimer = setTimeout(() => {
$.get("/api/search", { q: $(this).val() }, renderResults);
}, 300);
});
jQuery 插件模式
$.fn.highlight = function (color) {
return this.css("background-color", color || "#ff0");
};
$("p").highlight("#ff6");
八、现代替代方案
| jQuery 功能 |
原生替代 |
$(".class") |
document.querySelectorAll(".class") |
$.ajax() |
fetch() / axios |
.fadeIn() |
CSS transition / Element.animate() |
.on("click") |
addEventListener |
.addClass() |
classList.add() |
九、思考题
- jQuery 的链式调用是如何实现的?
- 为什么事件委托
$(parent).on("click", ".child", fn) 对动态元素有效?
- 在一个已有 Vue/React 的页面中引入 jQuery 可能引发什么问题?
jQuery 毕设快速开发入门
背景
很多同学觉得 jQuery "过时了",跳过它直接学 React/Vue。但实际毕设中,大量场景只需要简单的 DOM 操作和 Ajax 请求,jQuery 恰恰是最快出活的选择。学习成本低、复制粘贴就能跑、兼容性好——特别适合时间紧迫的毕设冲刺。
核心概念
jQuery 的三句话心法
- 选择元素,然后操作它:
$('.box').addClass('active')
- 事件驱动:
$('#btn').on('click', function() { ... })
- Ajax 很简单:
$.get('/api/data', function(res) { ... })
选择器大全
$('#id')
$('.class')
$('div')
$('[name="x"]')
$('.parent .child')
$('li:first')
常用 DOM 操作
$('#el').text('hello')
$('#el').html('<b>bold</b>')
$('#el').val()
$('#el').addClass('active')
$('#el').css('color', 'red')
$('#el').toggle()
$('<div>新元素</div>').appendTo('body')
$('#list').append('<li>item</li>')
分步操作
第一步:引入 jQuery
最简单方式——CDN:
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
第二步:等待 DOM 就绪
$(function() {
console.log('页面加载完毕');
});
第三步:Ajax 请求
$.get('/api/students', function(data) {
data.forEach(s => {
$('#list').append(`<li>${s.name}</li>`);
});
});
$.post('/api/students', { name: '张三', major: 'CS' }, function(res) {
alert('添加成功');
});
第四步:事件绑定
$('#saveBtn').on('click', function() {
const name = $('#nameInput').val();
$.post('/api/students', { name: name });
});
$('#list').on('click', '.delete-btn', function() {
$(this).closest('li').remove();
});
毕设实战模式
模式一:纯静态 + jQuery 交互
适合纯前端页面、作品展示站。
HTML + CSS + jQuery CDN,零构建工具。
模式二:jQuery + Bootstrap 管理后台
Bootstrap 提供 UI,jQuery 处理表单和表格。
引入 Bootstrap CSS + jQuery + Bootstrap JS。
用 DataTables 插件做表格分页搜索。
模式三:jQuery + 后端 API
前端 jQuery 调后端接口。
$.get('/api/data') → 渲染表格
$.post('/api/form') → 提交表单
思考题
- 事件委托
$(parent).on('click', 'child', fn) 相比直接绑定有什么优势?
- 为什么 Ajax 请求要在
$(function(){}) 内部执行?
- jQuery 的链式调用
$el.addClass().fadeIn().text() 是怎么实现的?
小结
jQuery 虽老,但实用。当你只需要一个简单的管理后台、一个表单提交页面、一个数据展示面板时,它是最快的方式。学习它只需半天,出活只需一小时。