jQuery 快速入门:选择器、事件与 AJAX
jQuery 快速入门:选择器、事件与 AJAX
jQuery 是一个快速、小巧且功能丰富的 JavaScript 库。它极大地简化了 HTML 文档遍历和操作、事件处理、动画以及 AJAX 交互。本教程将带你从零开始,掌握 jQuery 中最核心的选择器、事件绑定以及 AJAX 数据请求,让你快速上手项目开发。
1. 引入 jQuery
在使用 jQuery 之前,你需要在 HTML 页面中引入它。你可以通过 CDN(推荐)或本地文件引入。
<!-- 使用 CDN 引入最新版 jQuery(3.x) -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
将这段代码放置在页面的 <head> 中或 </body> 前。一旦引入,全局变量 jQuery 和它的别名 $ 就可以使用了。
2. jQuery 核心语法
jQuery 的基本语法是 $(selector).action():
$代表 jQuery。selector用于“查找” HTML 元素。action()对元素执行某种操作。
示例:$("p").hide() 会隐藏所有 <p> 标签。
所有 jQuery 代码最好写在文档就绪事件中,确保 DOM 完全加载后再执行 JavaScript。
$(document).ready(function(){
// 你的 jQuery 代码
});
// 简写形式(更常用)
$(function(){
// 代码写在这里
});
3. 选择器:精准定位元素
jQuery 选择器基于 CSS 选择器,并扩展了更多实用功能。它们能够帮助你快速选取所需元素。
3.1 基本选择器
- 元素选择器:
$("p")选取所有<p>元素。 - ID 选择器:
$("#myId")选取唯一 ID 为myId的元素。 - 类选择器:
$(".myClass")选取所有 class 为myClass的元素。 - 通配选择器:
$("*")选取所有元素。
$(function(){
$("button").click(function(){
$("p").css("color", "red"); // 所有 p 变红
$("#title").hide(); // 隐藏 id 为 title 的元素
$(".highlight").fadeOut(); // 淡出所有带 highlight 类的元素
});
});
3.2 组合与层级选择器
你可以组合选择器或利用元素之间的层级关系来定位。
$("p.intro") // 选取 class 为 intro 的 <p> 元素
$("div span") // 选取 <div> 内部的所有 <span>(后代)
$("div > span") // 选取 <div> 的直接子元素 <span>
$("ul li:first") // 选取第一个 <ul> 下的第一个 <li>
$("ul li:last") // 选取最后一个 <li>
3.3 过滤选择器
jQuery 提供了丰富的过滤选择器,方便对结果集进行筛选。
$("li:even") // 选取索引为偶数的 <li>,从 0 开始
$("li:odd") // 选取索引为奇数的 <li>
$(":header") // 选取所有标题元素(h1 - h6)
$("div:visible") // 选取所有可见的 <div>
$("input:checked") // 选取所有被选中的复选框或单选框
$(":input") // 选取所有 input、select、textarea、button 元素
3.4 属性选择器
根据元素的属性及属性值进行选择,非常灵活。
$("[href]") // 所有带有 href 属性的元素
$("a[target='_blank']") // target 属性等于 _blank 的 <a> 元素
$("input[name^='user']") // name 以 'user' 开头的 input
$("input[name$='email']") // name 以 'email' 结尾的 input
$("img[src*='logo']") // src 属性包含 'logo' 的图片
4. 事件:让页面动起来
jQuery 让你能够以简洁的方式为元素绑定事件,处理用户交互。
4.1 常用事件方法
- 鼠标事件:
click,dblclick,mouseenter,mouseleave - 键盘事件:
keypress,keydown,keyup - 表单事件:
submit,change,focus,blur - 文档/窗口事件:
load,resize,scroll
$("#btn").click(function(){
alert("按钮被点击了");
});
$("input").focus(function(){
$(this).css("background-color", "#e0f0ff");
});
$("form").submit(function(event){
// 阻止表单默认提交
event.preventDefault();
alert("表单提交被拦截");
});
4.2 事件绑定:on() 方法
on() 方法是 jQuery 中推荐的事件绑定方式,尤其是动态创建的元素,你需要使用事件委托。
基本绑定:
$("button").on("click", function(){
console.log("常规绑定");
});
事件委托: 为当前存在和未来动态添加的元素绑定事件。语法为 $(祖先选择器).on(事件, 子元素选择器, 处理函数)。
// 为 #list 下的所有现有和未来的 <li> 绑定点击事件
$("#list").on("click", "li", function(){
alert($(this).text());
});
绑定多个事件:
$("#myDiv").on({
mouseenter: function(){
$(this).css("background-color", "lightgray");
},
mouseleave: function(){
$(this).css("background-color", "white");
},
click: function(){
$(this).toggleClass("active");
}
});
4.3 事件对象
事件处理函数中可以通过参数 event 获取事件信息,并执行常见操作。
$("a").click(function(event){
event.preventDefault(); // 阻止默认行为
event.stopPropagation(); // 阻止事件冒泡
console.log(event.target); // 触发事件的元素
console.log("X: " + event.pageX + ", Y: " + event.pageY);
});
5. AJAX:异步数据交互
jQuery 封装了 AJAX 方法,让你无需编写复杂的 XMLHttpRequest 代码即可与服务器进行数据交换。
5.1 load() 方法
最简单的 AJAX 方法,直接从服务器加载数据,并把返回的 HTML 放入匹配的元素中。
// 将 "data.html" 的内容加载到 id 为 result 的区块中
$("#result").load("data.html");
// 带选择器的加载:只加载 data.html 中 id 为 container 的部分
$("#result").load("data.html #container");
// 加载完成后执行回调
$("#result").load("data.html", function(response, status, xhr){
if(status == "success"){
console.log("数据加载成功");
} else {
console.log("加载失败: " + status);
}
});
5.2 $.get() 和 $.post()
快捷方法用于发送 GET 或 POST 请求。
GET 请求:
$.get("server.php", { id: 1, name: "John" })
.done(function(data){
$("#result").html(data);
})
.fail(function(){
alert("请求失败");
});
或者使用回调参数:
$.get("test.php", { page: 5 }, function(response){
console.log("服务器返回数据: ", response);
});
POST 请求:
$.post("submit.php", {
username: "admin",
password: "123456"
}, function(data, status){
if(status == "success"){
alert("提交成功");
}
});
5.3 $.ajax() 方法(全面控制)
$.ajax() 是底层方法,可通过配置参数实现所有 AJAX 功能。
$.ajax({
url: "api/data",
type: "POST", // 请求方法 GET/POST/PUT/DELETE
data: { key: "value" }, // 发送到服务器的数据
dataType: "json", // 预期的服务器响应数据类型
beforeSend: function(){
// 请求前显示加载动画
$("#loading").show();
},
success: function(response){
// 处理成功返回的数据
console.log(response);
},
error: function(xhr, status, error){
// 处理错误
alert("请求出错: " + error);
},
complete: function(){
// 请求完成(无论成功失败)
$("#loading").hide();
}
});
5.4 全局 AJAX 事件处理器
可以在整个页面上统一监听 AJAX 生命周期,常用于全局加载指示器。
// AJAX 请求开始时触发
$(document).ajaxStart(function(){
$("#global-loader").show();
});
// AJAX 请求全部完成时触发
$(document).ajaxStop(function(){
$("#global-loader").hide();
});
5.5 处理表单数据与序列化
jQuery 提供了方便的序列化方法,将表单数据转换为 URL 编码字符串。
// 将 form 内所有元素序列化为字符串
var formData = $("#myForm").serialize();
// 发送序列化表单数据
$.post("process.php", formData, function(response){
console.log(response);
});
6. 实战小练习
综合运用选择器、事件和 AJAX,编写一个简单的用户搜索功能。
HTML 结构:
<input type="text" id="search" placeholder="输入用户名">
<button id="searchBtn">搜索</button>
<ul id="userList"></ul>
jQuery 代码:
$(function(){
$("#searchBtn").click(function(){
var query = $("#search").val();
if(query.trim() === ""){
alert("请输入搜索关键词");
return;
}
$.ajax({
url: "https://api.example.com/users",
type: "GET",
data: { q: query },
dataType: "json",
success: function(users){
// 清空列表
var $list = $("#userList").empty();
if(users.length > 0){
$.each(users, function(i, user){
$list.append(`<li>${user.name} - ${user.email}</li>`);
});
} else {
$list.append("<li>没有找到用户</li>");
}
},
error: function(){
alert("搜索请求失败,请稍后重试");
}
});
});
// 支持回车键触发搜索
$("#search").keypress(function(e){
if(e.which === 13){
$("#searchBtn").click();
}
});
});
通过上述练习,你巩固了元素选取、点击事件、AJAX 调用以及动态 DOM 操作。
7. 总结与下一步
本教程覆盖了 jQuery 的三大支柱:选择器让你轻松获取元素,事件机制让你处理交互,AJAX 让你实现异步数据交换。掌握这些知识后,你可以继续学习:
- jQuery 动画与效果(fade, slide, animate)
- DOM 操作(append, prepend, replaceWith 等)
- jQuery 插件开发
jQuery 体积小、兼容性好,即使是现代前端框架盛行的今天,仍然大量用于维护旧项目或快速原型开发。希望这篇教程帮你打下了坚实的基础。现在,动手实践吧!