jQuery中内容选择器与表单选择器有哪些不同

发布时间:2022-03-31 13:35:24 作者:iii
来源:亿速云 阅读:169
# 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");

二、表单选择器详解

2.1 设计初衷

表单选择器(Form Selectors)专门针对HTML表单元素优化,提供更简洁的语法来选取: - 各种类型的输入控件(input、select、textarea等) - 不同状态的表单元素(禁用、选中、聚焦等)

2.2 完整语法参考

选择器 对应HTML元素
:input 所有表单元素(input/select/textarea/button)
:text <input type="text">
:password <input type="password">
:radio 单选按钮
:checkbox 复选框
:submit 提交按钮
:disabled 被禁用的表单元素
:checked 被选中的单选/复选框

2.3 实际应用示例

// 禁用所有文本输入框
$(":text").prop("disabled", true);

// 获取选中的复选框值
$(":checkbox:checked").each(function() {
  console.log($(this).val());
});

// 重置所有表单元素
$("form :input").val('');

三、核心差异对比

3.1 筛选维度不同

维度 内容选择器 表单选择器
筛选依据 元素内容/子元素存在性 表单元素类型/状态
适用元素 所有DOM元素 仅表单相关元素
性能影响 需要扫描内容(较慢) 类型过滤(较快)

3.2 性能注意事项

// 优化写法(限定范围) $(”#contentSection”).find(“p:contains(‘特殊文本’)”);

  
- 表单选择器通常基于元素类型属性,浏览器原生支持快速过滤

### 3.3 特殊边界情况
- `:has()`选择器会创建新的jQuery对象
  ```javascript
  // 正确链式操作
  $("ul").has("li.active").addClass("has-active");

// 选择所有表单控件(包括select/textarea等) $(“:input”)


---

## 四、组合使用技巧

### 4.1 联合过滤示例
```javascript
// 选择包含"必填"文本且未被禁用的输入框
$(":input:not(:disabled):contains('必填')")
  .closest(".form-group")
  .addClass("required");

4.2 与属性选择器结合

// 选择所有非空的密码输入框
$("input[type='password']:parent");

4.3 动态内容处理

// 监控内容变化(需配合MutationObserver)
const observer = new MutationObserver(() => {
  $("div.message:contains('错误')").fadeTo(500, 0.5);
});
observer.observe(document.body, { childList: true, subtree: true });

五、最佳实践建议

  1. 优先使用ID/Class选择器:在可能的情况下先用基础选择器缩小范围 “`javascript // 不推荐 $(”:contains(‘提交’)“);

// 推荐 $(”.btn-submit:contains(‘提交’)“);


2. **缓存重复使用的选择器**:
   ```javascript
   const $formInputs = $("form :input");
   $formInputs.addClass("form-control");
  1. 注意选择器执行顺序
    
    // 先类型过滤再内容筛选效率更高
    $("div.content > p:contains('重要')");
    

结语

内容选择器与表单选择器虽然同属jQuery选择器体系,但分别针对内容筛选和表单控制两个完全不同的场景。理解它们的实现原理和性能特征,能够帮助开发者在实际项目中做出更合理的选择器组合方案。随着现代浏览器原生API的增强,建议在复杂场景下结合querySelectorAll等原生方法进行性能优化。

关键记忆点:内容选择器查”里面有什么”,表单选择器看”是什么控件” “`

推荐阅读:
  1. jQuery内容选择器
  2. JQuery选择器——基本筛选选择器和内容筛选选择器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jquery

上一篇:MySQL中update语句的执行过程是怎么样的

下一篇:Springboot如何实现定时任务

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》