您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# jQuery中内容选择器与表单选择器有哪些不同
## 引言
在jQuery的DOM操作中,选择器(Selector)是最基础也是最重要的功能之一。内容选择器和表单选择器作为jQuery选择器体系中的两个重要分类,分别针对不同场景提供了针对性的元素筛选能力。本文将深入分析这两种选择器的设计目的、语法特点、使用场景及核心差异,帮助开发者更精准地选择DOM元素。
---
## 一、内容选择器概述
### 1.1 定义与作用
内容选择器(Content Filter Selectors)主要用于基于元素包含的**文本内容**或**子元素结构**进行筛选,典型场景包括:
- 查找包含特定文本的元素
- 选择包含/不包含子元素的容器
- 匹配空元素或特定结构的元素
### 1.2 核心语法列表
| 选择器 | 描述 | 示例 |
|------------------|-----------------------------|-------------------------|
| `:contains(text)` | 选择包含指定文本的元素 | `$("p:contains('Hello')")` |
| `:empty` | 选择没有子元素的空元素 | `$("div:empty")` |
| `:has(selector)` | 选择包含匹配子元素的父元素 | `$("div:has(p)")` |
| `:parent` | 选择至少有一个子元素的父元素 | `$("td:parent")` |
### 1.3 典型使用场景
```javascript
// 高亮包含"警告"文本的段落
$("p:contains('警告')").addClass("highlight");
// 隐藏所有空列表项
$("li:empty").hide();
// 为包含图片的div添加边框
$("div:has(img)").css("border", "1px solid red");
表单选择器(Form Selectors)专门针对HTML表单元素优化,提供更简洁的语法来选取: - 各种类型的输入控件(input、select、textarea等) - 不同状态的表单元素(禁用、选中、聚焦等)
选择器 | 对应HTML元素 |
---|---|
:input |
所有表单元素(input/select/textarea/button) |
:text |
<input type="text"> |
:password |
<input type="password"> |
:radio |
单选按钮 |
:checkbox |
复选框 |
:submit |
提交按钮 |
:disabled |
被禁用的表单元素 |
:checked |
被选中的单选/复选框 |
// 禁用所有文本输入框
$(":text").prop("disabled", true);
// 获取选中的复选框值
$(":checkbox:checked").each(function() {
console.log($(this).val());
});
// 重置所有表单元素
$("form :input").val('');
维度 | 内容选择器 | 表单选择器 |
---|---|---|
筛选依据 | 元素内容/子元素存在性 | 表单元素类型/状态 |
适用元素 | 所有DOM元素 | 仅表单相关元素 |
性能影响 | 需要扫描内容(较慢) | 类型过滤(较快) |
// 优化写法(限定范围) $(”#contentSection”).find(“p:contains(‘特殊文本’)”);
- 表单选择器通常基于元素类型属性,浏览器原生支持快速过滤
### 3.3 特殊边界情况
- `:has()`选择器会创建新的jQuery对象
```javascript
// 正确链式操作
$("ul").has("li.active").addClass("has-active");
:input
与原生input
元素的区别:
“`javascript
// 仅选择标签
$(“input”)// 选择所有表单控件(包括select/textarea等) $(“:input”)
---
## 四、组合使用技巧
### 4.1 联合过滤示例
```javascript
// 选择包含"必填"文本且未被禁用的输入框
$(":input:not(:disabled):contains('必填')")
.closest(".form-group")
.addClass("required");
// 选择所有非空的密码输入框
$("input[type='password']:parent");
// 监控内容变化(需配合MutationObserver)
const observer = new MutationObserver(() => {
$("div.message:contains('错误')").fadeTo(500, 0.5);
});
observer.observe(document.body, { childList: true, subtree: true });
// 推荐 $(”.btn-submit:contains(‘提交’)“);
2. **缓存重复使用的选择器**:
```javascript
const $formInputs = $("form :input");
$formInputs.addClass("form-control");
// 先类型过滤再内容筛选效率更高
$("div.content > p:contains('重要')");
内容选择器与表单选择器虽然同属jQuery选择器体系,但分别针对内容筛选和表单控制两个完全不同的场景。理解它们的实现原理和性能特征,能够帮助开发者在实际项目中做出更合理的选择器组合方案。随着现代浏览器原生API的增强,建议在复杂场景下结合querySelectorAll
等原生方法进行性能优化。
关键记忆点:内容选择器查”里面有什么”,表单选择器看”是什么控件” “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。