jQuery 选择器(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言

在现代 Web 开发中,jQuery 选择器如同一把精准的钥匙,能够快速定位页面中的 HTML 元素。无论是初学者构建简单的交互效果,还是中级开发者处理复杂的数据操作,掌握这一工具都能显著提升开发效率。本文将从基础到进阶,系统解析 jQuery 选择器的核心原理与实际应用,通过生动的比喻和代码示例,帮助读者轻松掌握这一技能。


一、选择器的基石:基本语法与核心概念

1.1 选择器的定义与作用

jQuery 选择器是通过 CSS 语法或自定义规则,从页面中筛选出特定 HTML 元素的工具。它的作用类似于“导航系统”,开发者通过它快速找到目标元素,进而实现动态操作(如修改样式、绑定事件或更新内容)。

核心概念
| 术语 | 解释 |
|---------------|--------------------------------------------------------------------|
| 选择器 | 定位 HTML 元素的规则或模式,例如 $("#myId")$("div")。 |
| 上下文 | 限定选择器搜索的范围,默认为整个文档。 |
| 匹配元素 | 符合选择器规则的 HTML 元素集合,以 jQuery 对象形式返回。 |

1.2 基础语法结构

使用 $() 函数包裹选择器规则,即可获取元素。例如:

// 选择 ID 为 "header" 的元素  
const header = $("#header");  

// 选择所有 <button> 元素  
const buttons = $("button");  

比喻
想象页面中的元素是图书馆的书籍,选择器就是书架上的分类标签。通过标签(如“小说”或“ID:1001”),读者能快速找到目标书籍,而无需翻遍所有书架。


二、基础选择器:快速定位元素的入门技巧

2.1 ID 选择器 #id

通过元素的 id 属性定位唯一元素。例如:

<div id="main-content">...</div>  
$("#main-content").css("background", "yellow");  

特点

  • 每个页面中 id 必须唯一。
  • 性能最优,因为浏览器会直接调用原生的 document.getElementById

2.2 类选择器 .class

通过元素的 class 属性匹配多个元素。例如:

<button class="btn btn-primary">提交</button>  
<button class="btn btn-danger">取消</button>  
$(".btn").click(function() {  
  alert("按钮被点击了!");  
});  

比喻
类选择器如同“标签系统”,多个书籍可以贴上相同的标签(如“编程”),方便批量操作。

2.3 元素选择器 element

根据 HTML 标签名选择元素。例如:

// 选择所有 <p> 元素  
$("p").hide();  

2.4 通配符选择器 *

匹配页面中所有元素。例如:

// 将所有元素的边框设为红色  
$("*").css("border", "1px solid red");  

注意
通配符性能较低,仅在必要时使用。


三、层级选择器:精准控制元素关系

3.1 后代选择器 ancestor descendant

选择某个元素的所有后代元素。例如:

<div class="container">  
  <p>第一段</p>  
  <div class="sub-container">  
    <p>第二段</p>  
  </div>  
</div>  
// 选择 .container 下的所有 <p> 元素  
$(".container p").text("内容被修改");  

3.2 子选择器 parent > child

仅选择直接子元素。例如:

// 仅选择 .container 的直接子 <p> 元素  
$(".container > p").css("color", "blue");  

3.3 相邻兄弟选择器 prev + next

选择紧邻前一个元素的下一个元素。例如:

<h2>标题</h2>  
<p>段落1</p>  
<p>段落2</p>  
// 选择标题后的第一个 <p> 元素  
$("h2 + p").css("font-weight", "bold");  

3.4 通用兄弟选择器 prev ~ siblings

选择前一个元素之后的所有兄弟元素。例如:

// 选择标题之后的所有 <p> 元素  
$("h2 ~ p").css("margin-left", "20px");  

比喻
层级选择器如同家庭关系图谱:

  • 后代选择器是“家族所有成员”;
  • 子选择器是“直接子女”;
  • 兄弟选择器是“同一父母下的兄弟姐妹”。

四、过滤选择器:按条件筛选元素

4.1 基础过滤选择器

4.1.1 :first:last

选择第一个或最后一个匹配的元素:

// 选择第一个 <div>  
$("div:first").addClass("highlight");  

// 选择最后一个 <li>  
$("li:last").css("color", "red");  

4.1.2 :even:odd

按索引奇偶性筛选元素:

// 为偶数索引的 <tr> 添加背景色  
$("tr:even").css("background", "#f0f0f0");  

4.1.3 :eq(index):gt(index)

按索引精确或范围筛选:

// 选择索引为 2 的元素(从 0 开始)  
$("div:eq(2)").show();  

// 选择索引大于 3 的元素  
$("li:gt(3)").hide();  

4.2 内容过滤选择器

4.2.1 :contains(text)

匹配包含特定文本的元素:

// 选择包含“JavaScript”的 <a> 元素  
$("a:contains('JavaScript')").css("color", "green");  

4.2.2 :empty

选择无子元素或文本的元素:

// 隐藏空的 <div>  
$("div:empty").hide();  

4.3 可见性过滤选择器

4.3.1 :visible:hidden

根据元素是否可见筛选:

// 显示所有隐藏的表单元素  
$("input:hidden").show();  

4.4 表单相关选择器

4.4.1 :input

匹配所有表单控件(如 <input>, <select>, <textarea>):

// 为所有输入框添加边框  
$("input").css("border", "1px solid #ccc");  

4.4.2 :checked

选择被选中的复选框或单选按钮:

// 获取选中的复选框值  
var selected = $("input:checked").val();  

五、动态选择与优化技巧

5.1 上下文选择器

通过指定上下文(DOM 节点或 jQuery 对象),缩小搜索范围:

// 在 #content 范围内选择 <span> 元素  
const spans = $("span", "#content");  

5.2 组合选择器

使用逗号分隔多个选择器,合并结果:

// 选择所有 <a> 和 <button> 元素  
$("a, button").on("click", function() { ... });  

5.3 性能优化建议

  • 避免复杂嵌套:如 $("div .content p")$(".content p") 更耗时。
  • 缓存选择结果:重复使用的元素应存储在变量中,避免多次查询。
  • 优先使用原生 API:如通过 document.querySelectorAll 处理复杂选择。

六、实战案例:构建动态表单验证

6.1 需求分析

设计一个包含用户名、邮箱和密码的表单,要求:

  1. 输入时实时验证格式。
  2. 提交时显示错误提示。

6.2 代码实现

<form id="myForm">  
  <input type="text" name="username" placeholder="用户名">  
  <input type="email" name="email" placeholder="邮箱">  
  <input type="password" name="password" placeholder="密码">  
  <button type="submit">提交</button>  
</form>  
// 实时验证输入  
$("#myForm input").on("input", function() {  
  const $this = $(this);  
  const value = $this.val();  

  if ($this.is("[name='username']") && value.length < 3) {  
    $this.addClass("error");  
  } else {  
    $this.removeClass("error");  
  }  
});  

// 表单提交验证  
$("#myForm").on("submit", function(e) {  
  e.preventDefault();  

  // 验证邮箱格式  
  const $email = $("input[name='email']");  
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;  
  if (!emailRegex.test($email.val())) {  
    $email.addClass("error");  
    return;  
  }  

  // 验证密码长度  
  const $password = $(":password");  
  if ($password.val().length < 6) {  
    $password.addClass("error");  
    return;  
  }  

  // 提交成功  
  alert("验证通过!");  
  $(this).find("input").val("");  
});  

6.3 效果说明

  • 通过 $("input[name='username']") 等选择器精准定位表单字段。
  • 使用 :password 简化密码输入框的选择。
  • 通过事件绑定实现动态交互,提升用户体验。

结论

jQuery 选择器是前端开发中不可或缺的工具,它简化了 DOM 操作的复杂度,让开发者能够高效地与页面元素交互。从基础的 ID、类选择器,到进阶的层级和过滤规则,掌握这些技巧能显著提升编码效率。

对于初学者,建议从简单选择器起步,逐步尝试组合和动态选择;中级开发者则可深入研究性能优化和高级过滤逻辑。通过本文提供的案例和代码示例,读者能够快速将理论转化为实践,最终在实际项目中灵活运用 jQuery 选择器的强大功能。

记住,选择器的精髓在于“精准匹配”,如同在茫茫数据中找到唯一的钥匙——每一次选择都应有明确的目标与逻辑。保持练习,你将逐渐成为 DOM 操作的“导航专家”!

最新发布