jquery selector(快速上手)

什么是 jQuery Selector?初学者也能轻松上手

在网页开发的世界里,jQuery 一直是一个广受欢迎的 JavaScript 库。它简化了 DOM 操作、事件处理和动画效果,而这一切的基础,就是 jQuery Selector。你可以把 jQuery Selector 想象成一个“精准的搜索引擎”——当你想在网页中找到某个元素时,它能帮你快速定位,就像在图书馆里用书名找到那本特定的书一样。

jQuery Selector 的核心作用是:通过 CSS 选择器语法,从 HTML 文档中选取一个或多个元素,然后对它们执行操作。无论是点击按钮、修改文本,还是隐藏某个区域,第一步都是用 selector 找到目标。

在接下来的内容中,我会带你一步步掌握这个强大的工具,从最基础的选择器语法,到复杂场景下的实战应用。无论你是刚接触前端开发,还是已有一定经验的中级开发者,都能从中获得实用的技巧。


基础选择器:从最简单的开始

在学习任何语言时,掌握基础语法是第一步。jQuery Selector 的基础选择器包括元素选择器、ID 选择器和类选择器,它们是构建复杂选择逻辑的基石。

元素选择器:按标签名找对象

元素选择器是最直接的方式,通过 HTML 标签名来选取元素。

// 选取页面中所有的 <p> 标签
$('p')

这个代码的意思是:找到所有 <p> 标签,然后返回一个 jQuery 对象。你可以对这个对象执行 .css().text() 等方法。

💡 提示:如果你有多个 <p> 标签,这个选择器会返回所有匹配的元素,形成一个集合。

ID 选择器:通过唯一标识找元素

每个 HTML 元素可以拥有 id 属性,它在整个页面中必须是唯一的。ID 选择器就是利用这一点,精准定位单个元素。

<div id="header">这是头部区域</div>
// 通过 # 号选取 id 为 header 的元素
$('#header')

这个选择器返回的是一个包含该元素的 jQuery 对象。因为 id 是唯一的,所以它永远只匹配一个元素。

类选择器:按 class 找一组元素

class 属性可以被多个元素共享,适合用来为一组元素添加统一样式或行为。

<p class="highlight">高亮文字 1</p>
<p class="highlight">高亮文字 2</p>
<p class="normal">普通文字</p>
// 选取所有 class 为 highlight 的元素
$('.highlight')

这个选择器会返回两个 <p> 元素,你可以统一设置它们的颜色或添加点击事件。


组合选择器:让选择更灵活

有时候我们需要同时满足多个条件,比如“找到所有 class 为 btn 且是 <a> 标签的元素”。这时就需要组合选择器。

交集选择器:多个条件同时满足

通过将多个选择器连写,表示“同时满足”的条件。

// 找到 class 为 btn 且是 <a> 标签的所有元素
$('a.btn')

这等价于 HTML 中的 <a class="btn">。注意,中间没有空格,表示“并且”。

多个选择器并列:任一条件满足即可

使用逗号分隔多个选择器,表示“或”的关系。

// 找到所有 class 为 btn 或 class 为 submit 的元素
$('.btn, .submit')

这个写法可以同时选中两个类别的元素,非常适合统一处理按钮样式或行为。


层级选择器:从结构中寻找目标

网页结构通常是嵌套的,层级选择器能帮助我们根据元素之间的父子、兄弟关系来定位。

后代选择器:查找所有后代元素

使用空格分隔两个选择器,表示“后代”关系。

<div id="container">
  <p>第一段</p>
  <ul>
    <li>列表项 1</li>
    <li>列表项 2</li>
  </ul>
</div>
// 找到 #container 内部的所有 <li> 元素
$('#container li')

这个选择器会找到 <ul> 下的所有 <li>,无论嵌套多深。

子元素选择器:只找直接子元素

使用 > 符号,表示“直接子元素”。

// 只找 #container 的直接子元素中的 <ul>
$('#container > ul')

与后代选择器不同,这个写法不会匹配嵌套更深的 <ul>,只限于一级子元素。

相邻兄弟选择器:紧邻的下一个元素

使用 + 号,表示“紧接在前一个元素之后的兄弟元素”。

<h2>标题</h2>
<p>段落内容</p>
<div>另一个块</div>
// 找到紧接在 <h2> 后面的 <p> 元素
$('h2 + p')

这个选择器只会匹配第一个 <p>,而不会匹配后面的 <div>


属性选择器:按属性值精准定位

有时我们无法通过标签名、ID 或 class 找到元素,但可以通过属性来定位。jQuery 支持丰富的属性选择器。

基本属性匹配

<a href="https://example.com" target="_blank">外部链接</a>
<input type="text" name="username" />
// 找到 href 属性为 https://example.com 的 <a> 标签
$('a[href="https://example.com"]')

属性值包含特定文本

使用 [attribute*="value"] 表示属性值包含指定文本。

// 找到 href 属性中包含 "example" 的链接
$('a[href*="example"]')

这会匹配 https://example.comhttps://www.example.org

属性值以特定字符串开头

使用 [attribute^="value"] 表示属性值以指定文本开头。

// 找到 href 以 https 开头的所有链接
$('a[href^="https://"]')

属性值以特定字符串结尾

使用 [attribute$="value"] 表示属性值以指定文本结尾。

// 找到 href 以 .pdf 结尾的链接
$('a[href$=".pdf"]')

这些技巧在处理动态生成的链接或表单字段时非常有用。


伪类选择器:让选择更智能

伪类选择器不是基于 HTML 属性,而是基于元素的状态或位置。它们让 jQuery Selector 更加“智能”。

基于位置的伪类

// 选取第一个 <li> 元素
$('li:first')

// 选取最后一个 <li> 元素
$('li:last')

// 选取第 3 个 <li> 元素(索引从 0 开始)
$('li:eq(2)')

// 选取索引为偶数的 <li>(0, 2, 4...)
$('li:even')

// 选取索引为奇数的 <li>(1, 3, 5...)
$('li:odd')

这些伪类特别适合处理列表项的样式交替(如隔行变色)。

基于状态的伪类

// 选取当前被选中的 input 元素
$('input:checked')

// 选取当前被激活的 input 元素(焦点状态)
$('input:focus')

// 选取不可用的元素
$('input:disabled')

这些在表单处理中非常实用,比如“提交前检查是否有输入”。


实战案例:用 jQuery Selector 实现一个动态表单验证

让我们通过一个真实场景,综合运用前面学到的知识。

<form id="userForm">
  <input type="text" name="username" class="required" placeholder="请输入用户名" />
  <input type="email" name="email" class="required" placeholder="请输入邮箱" />
  <input type="password" name="password" class="required" placeholder="请输入密码" />
  <button type="submit">提交</button>
</form>
// 1. 为所有 class 为 required 的输入框添加实时验证
$('.required').on('blur', function () {
  // 检查输入是否为空
  if ($(this).val().trim() === '') {
    $(this).addClass('error').next('.error-msg').text('此字段为必填项');
  } else {
    $(this).removeClass('error').next('.error-msg').text('');
  }
});

// 2. 为提交按钮添加点击事件
$('#userForm button[type="submit"]').on('click', function (e) {
  // 检查是否有未填写的必填字段
  const missingFields = $('.required:empty').length;

  if (missingFields > 0) {
    e.preventDefault(); // 阻止表单提交
    alert('请填写所有必填字段!');
  }
});

在这个例子中,我们使用了:

  • $('.required'):类选择器
  • :empty:伪类选择器
  • :blur:事件绑定
  • $(this):上下文引用

整个过程逻辑清晰,代码可读性强,展示了 jQuery Selector 在实际项目中的强大能力。


小结:掌握 jQuery Selector,就是掌握 DOM 操作的钥匙

从最基础的元素、ID、类选择器,到组合、层级、属性和伪类选择器,jQuery Selector 提供了一套完整而灵活的语法体系。它让你不再需要手动遍历 DOM,而是用一句简洁的代码,精准定位目标元素。

无论是构建动态交互、实现表单验证,还是做数据可视化,jQuery Selector 都是不可或缺的工具。它的语法接近 CSS,学习成本低,上手快,特别适合初学者快速入门前端开发。

记住,选择器写得越精准,代码就越高效、越稳定。多练习、多调试,你很快就能熟练掌握这套技能。

最后说一句:jQuery Selector 不仅是语法,更是一种思维方式——学会如何“找”到你想要的元素,是前端开发的第一步,也是最重要的一步。