【jQuery】 jQuery基础及选择器介绍(基本选择器 层次选择器 属性选择器 过滤选择器)
文章目录
- jQuery基础
- 1. 优势
- 2. 版本
- 3. 基本语法
- 4. 选择器
- 基本选择器
- 层次选择器
- 属性选择器
- 过滤选择器
- 基本过滤选择器
- 可见性过滤选择器
- 注意事项
jQuery基础
jQuery 是一个功能强大且易于使用的 JavaScript 库,它极大地简化了前端开发的工作。无论是 DOM 操作、事件处理还是 Ajax 交互,jQuery 都能提供简洁高效的解决方案。尽管近年来随着 ES6+ 以及框架如 React、Vue 和 Angular 的兴起,jQuery 的使用频率有所下降,但对于许多项目来说,尤其是那些不需要复杂状态管理和虚拟 DOM 更新的项目,jQuery 仍然是一个非常实用的选择。
设计思想:write less, do more
- jQuery 官网
- jQuery 中文 API 手册
1. 优势
通过一个简单的例子来对比原生 JavaScript 和使用 jQuery 的不同之处
需求说明:
当用户点击页面中的按钮时,将一个文本框中的文本变为大写,并且改变背景颜色。
<!-- 使用原生 JavaScript -->
<style>.uppercase {background-color: yellow;}
</style>
<body><input type="text" id="myInput" value="hello world"><button id="convert">转换为大写</button><script>document.getElementById('convert').addEventListener('click', function() {var inputElement = document.getElementById('myInput');inputElement.value = inputElement.value.toUpperCase();inputElement.classList.add('uppercase');});</script>
</body>
<!-- 使用原生 jQuery -->
<style>.uppercase {background-color: yellow;}
</style>
<script src="https://code.jquery.com/jquery-3.x.x.min.js"></script>
<body><input type="text" id="myInput" value="hello world"><button id="convert">转换为大写</button><script>$(document).ready(function() {$("#convert").click(function() {var inputElement = $("#myInput");inputElement.val(inputElement.val().toUpperCase());inputElement.addClass('uppercase');});});</script>
</body>
代码量
- 原生 JavaScript:需要导入 DOM 元素,添加事件监听器,并且手动改变文本和样式。
- jQuery:使用链式调用和更简洁的选择器,使得代码更短更清晰。
语法简洁性
- 原生 JavaScript:语法相对繁琐,需要显式地获取元素引用,绑定事件处理函数。
- jQuery:语法更为简洁,使用
$符号和链式调用可以让代码更加紧凑。
易读性和可维护性
- 原生 JavaScript:虽然现代 JavaScript 已经非常强大,但是对于一些简单的DOM操作,代码仍然显得有些冗长。
- jQuery:代码更容易阅读,维护起来也更方便
JavaScript 转 jQuery
$(js对象);
jQuery 转 JavaScript
$(选择器).get(0);/$(选择器)[0]
2. 版本
jQuery 库分开发版和发布版
| 名称 | 大小 | 说明 |
|---|---|---|
| jquery-3.版本号.js(开发版) | 约286KB | 完整无压缩版本,主要用于测试、学习和开发 |
| jquery-3.版本号.min.js(发布版) | 约94.8KB | 经过工具压缩或经过服务器开启Gzip压缩,主要应用于发布的产品和项目 |
<script src="js/jquery-3.3.1.min.js" type="text/javascript"></script>
3. 基本语法
// 为页面加载事件绑定方法
$(document).ready(function() {alert("我欲奔赴沙场征战jQuery,势必攻克之!");
});
$(document).ready() 与 window.onload 类似,但也有区别
| window.onload | $(document).ready() | |
|---|---|---|
| 执行时机 | 必须等待网页中所有的内容加载完毕后(包括图片、flash、视频等)才能执行 | 网页中所有 DOM 文档结构绘制完毕后即刻执行,可能与 DOM 元素关联的内容(图片、flash、视频等)并没有加载完 |
| 编写个数 | 同一页面不能同时编写多个 | 同一页面能同时编写多个 |
| 简化写法 | 无 | $(function(){ // 执行代码 }); |
4. 选择器
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作
基础语法是:$(selector).action()
基本选择器
标签选择器、类选择器、ID选择器、并集选择器和全局选择器
| 名称 | 语法构成 | 描述 | 示例 |
|---|---|---|---|
| 标签选择器 | element | 根据给定的标签名匹配元素 | $(“h2”)选取所有h2元素 |
| 类选择器 | .class | 根据给定的class匹配元素 | $(“.title”)选取所有class为title的元素 |
| ID选择器 | #id | 根据给定的id匹配元素 | $(“#title”)选取id为title的元素 |
| 并集选择器 | selector1,selector2,…,selectorN | 将每一个选择器匹配的元素合并后一起返回 | $(“div,p,.title” )选取所有div、p和拥有class为title的元素 |
| 全局选择器 | * | 匹配所有元素 | $(“*”)选取所有元素 |
标签选择器根据给定的标签名匹配元素
$(document).ready(function(){$("dt").click(function(){$("dd").css("display","block"); // 设置<dd>标签中的内容显示出来});$("h1").css("color","blue"); // 设置<h1>标签中的字体颜色为蓝色
})
类选择器根据给定的class匹配元素
$(".price").css({"background":"#efefef","padding":"5px"});
// 设置class为price元素的背景颜色和内边距
ID选择器根据给定的 id 匹配元素
$("#author").css("color","#083499");
// 设置 id 为 author 的元素的字体颜色
并集选择器用来合并元素集合
$(".intro,dt,dd").css("color","#ff0000");
// 改变 class 为 intro,所有dt,dd颜色为纯红色
全局选择器可以获取所有元素
$("*").css("font-weight","bold");
// 设置所有元素的字体加粗显示
层次选择器
通过 DOM 元素之间的层次关系来获取元素
| 名称 | 语法构成 | 描述 | 示例 |
|---|---|---|---|
| 后代选择器 | ancestor descendant | 选取ancestor元素里的所有descendant(后代)元素 | $(“#menu span”)选取#menu下的<span>元素 |
| 子选择器 | parent>child | 选取parent元素下的child(子)元素 | $(“#menu>span”)选取#menu的子元素<span> |
| 相邻元素选择器 | prev+next | 选取紧邻prev元素之后的next元素 | $(“h2+dl”)选取紧邻<h2>元素之后的同辈元素<dl> |
| 同辈元素选择器 | prev~sibings | 选取prev元素之后的所有siblings元素 | $(“h2~dl”)选取<h2>元素之后所有的同辈元素<dl> |
后代选择器用来获取元素的后代元素
$(".textRight p").css("color","red");
// 设置class为textRight元素中的所有<p>标签的字体全部为红色
子选择器用来获取元素的子元素
$(".textRight>p").css("color","red");
// 设置class为textRight元素中的子元素<p>标签的字体全部为红色
相邻选择器用来选取紧邻目标元素的下一个元素
$("h1+p").css("text-decoration","underline");
同辈选择器用来选取目标元素之后的所有同辈元素
$("h1~p").css("text-decoration","underline");
属性选择器
通过 HTML 元素的属性来选择元素
| 语法构成 | 描述 | 示例 |
|---|---|---|
| [attribute^=value] | 选取给定属性是以某些特定值开始的元素 | $(“[href^=‘en’]”)选取href属性值以en开头的元素 |
| [attribute$=value] | 选取给定属性是以某些特定值结尾的元素 | ( " [ h r e f ("[href ("[href=‘.jpg’]")选取href属性值以.jpg结尾的元素 |
| [attribute*=value] | 选取给定属性是以包含某些值的元素 | $(“[href*=‘txt’]”)选取href属性值中含有txt的元素 |
根据属性名获取元素
1)根据是否包含某属性来选取元素
// a 标签带有 class 属性
$("#news a[class]").css("background","#c9cbcb");
根据属性值获取元素
1)根据属性的值来选取元素
// class 属性值为 hot
$("#news a[class='hot']").css("background","#c9cbcb");
2)指定选取不等于属性是某个特定值的元素
$("#news a[class!='hot']").css("background","#c9cbcb");
根据属性值包含特定的值获取元素
1)指定属性值以指定值开头的元素
// a 标签 href 属性值以 www 开头
$("#news a[href^='www']").css("background","#c9cbcb");
2)指定属性值以指定值结尾的元素
// a 标签 href 属性值以 html 结尾
$("#news a[href$='html']").css("background","#c9cbcb");
3)指定属性值包含指定值的元素
// a 标签 href 属性值包含 k2 的元素
$("#news a[href*='k2']").css("background","#c9cbcb");
过滤选择器
通过特定的过滤规则来筛选出所需的元素
主要分类
基本过滤选择器
可见性过滤选择器
表单对象过滤选择器
内容过滤选择器、子元素过滤选择器……
基本过滤选择器
| 语法 | 描述 | 示例 |
|---|---|---|
| :first | 选取第一个元素 | $(“li:first”)选取所有<li>元素中的第一个<li>元素 |
| :last | 选取最后一个元素 | $(“li:last”)选取所有<li>元素中的最后一个<li>元素 |
| :not(selector) | 选取去除所有与给定选择器匹配的元素 | $(“li:not(.three)”)选取class不是three的元素 |
| :even | 选取索引是偶数的所有元素 | $(“li:even”)选取索引是偶数的所有<li>元素 |
| :odd | 选取索引是奇数的所有元素 | $(“li:odd”)选取索引是奇数的所有<li>元素 |
| :eq(index) | 选取索引等于index的元素 | $(“li:eq(1)”)选取索引等于1的<li>元素 |
| :gt(index) | 选取索引大于index的元素 | $(“li:gt(1)”)选取索引大于1的<li>元素 |
| :lt(index) | 选取索引小于index的元素 | $(“li:gt(1)”)选取索引小于1的<li>元素 |
| :header | 选取所有标题元素 如h1~h6 | $(“:header”)选取网页中所有标题元素 |
| :focus | 选取当前获取焦点的元素 | $(“:focus”)选取当前获取焦点的元素 |
| :animated | 选择所有动画 | $(“:animated”)选取当前所有动画元素 |
案例:制作仿奥列表页面
<div class="contain"><h2>祝福冬奥</h2><ul><li> 贝克汉姆:衷心希望北京能够申办成功!</li><li> 姚明:北京申冬奥是个非常棒的机会!加油!</li><li> 张虹:北京办冬奥,大家的热情定超乎想象! </li><li> 肖恩怀特:我爱北京,支持北京申办冬奥会!</li><li> 赵宏博:北京申办冬奥会是再合适不过了!</li><li> 你喜欢哪些冬季运动项目?(点击进入调查页)</li></ul>
</div>

$(".contain:header").css({"background":"#2a65ba","color":"#ffffff"});
$(".contain li:first").css({"font-size":"16px","color":"#e90202"});
$(".contain li:last").css("border","none");
$(".contain li:even").css("background","#f0f0f0");
$(".contain li:odd").css("background","#cccccc");

$(".contain:header").css({"background":"#2a65ba","color":"#ffffff"});
$(".contain li:first").css({"font-size":"16px","color":"#e90202"});
$(".contain li:last").css("border","none");
$(".contain li:lt(2)").css({"color":"#708b02"});
$(".contain li:gt(3)").css({"color":"#b66302"});

可见性过滤选择器
通过元素显示状态来选取元素
| 语法 | 描述 | 示例 |
|---|---|---|
| :visible | 选取所有可见的元素 | $(“:visible”)选取所有可见的元素 |
| :hidden | 选取所有隐藏的元素 | $(“:hidden”)选取所有隐藏的元素 |
$("p:hidden").show();
$("p:visible").hide();
注意事项
1)特殊符号的转义
<div id="id#a">aa</div>
<div id="id[2]">cc</div>
$("#id#a"); =====> $("#id\\#a");
$("#id[2]"); =====> $("#id\\[2\\]");
2)选择器的书写规范很严格,多一个空格或少一个空格,都会影响选择器的效果
// 带空格的jQuery选择器 选取class为“test”的元素内部的隐藏元素
var $t_a = $(".test :hidden"); // 不带空格的jQuery选择器 选取隐藏的class为“test”的元素
var $t_b = $(".test:hidden");
相关文章:
【jQuery】 jQuery基础及选择器介绍(基本选择器 层次选择器 属性选择器 过滤选择器)
文章目录 jQuery基础1. 优势2. 版本3. 基本语法4. 选择器基本选择器层次选择器属性选择器过滤选择器基本过滤选择器可见性过滤选择器 注意事项 jQuery基础 jQuery 是一个功能强大且易于使用的 JavaScript 库,它极大地简化了前端开发的工作。无论是 DOM 操作、事件处…...
网站在对抗机器人攻击的斗争中失败了
95% 的高级机器人攻击都未被发现,这一发现表明当前的检测和缓解策略存在缺陷。 这表明,虽然一些组织可能拥有基本的防御能力,但他们没有足够的能力应对更复杂的攻击。 例如利用人工智能和机器学习来模仿人类行为的攻击。 这些统计数据强调…...
Centos7 搭建logstash
下载并安装公共签名密钥: sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 创建一个名为 /etc/yum.repos.d/logstash.repo 的文件,并添加以下内容: [logstash-7.x] nameElastic repository for 7.x packages baseu…...
面试题:Redis(五)
1. 面试题 面试问 记录对集合中的数据进行统计 在移动应用中,需要统计每天的新增用户数和第2天的留存用户数; 在电商网站的商品评论中,需要统计评论列表中的最新评论; 在签到打卡中,需要统计一个月内连续打卡的用户数&…...
LeetCode18.四数之和
题目链接:18. 四数之和 - 力扣(LeetCode) 这道题是在三数之和上改编出来的,在写这道题之前可以尝试以下三数之和(15. 三数之和 - 力扣(LeetCode)); 1.常规解法…...
jmeter出参保存到文件,保存失败解决
1、添加JSON提取 2、添加beanshell FileWriter writer new FileWriter("C:/Users/xxx/Desktop/signUrl.csv", true); writer.write(vars.get("company_name")"\t"vars.get("signUrl")"\n"); writer.close(); 写文件的两个…...
黑龙江网络安全等级保护办理机制
黑龙江的网络安全等级保护机制根据《网络安全法》和相关法规要求,信息系统按照安全等级从低到高分为五级,分别为一般、重要、非常重要、特别重要和特别敏感。不同等级的信息系统必须实施相应的安全措施,以确保系统免受内外部威胁,…...
小红的行列式构造
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 小红希望你构造一个3阶行列式,满足每个元素的绝对值不小于1,且行列式的值等于xxx。你能帮帮她吗? 输入描述: 一个整数xxx −100≤x≤100 输出描…...
pyflink过滤kafka数据
from pyflink.table import (TableEnvironment, EnvironmentSettings)# 输入、输出、过滤条件 columns_in [ ... ]columns_out [ ... ] filter_condition "name 蒋介石 and sex 男"# 创建执行环境t_env TableEnvironment.create(EnvironmentSettings.in_stream…...
Webpack 完整指南
🌈个人主页:前端青山 🔥系列专栏:Webpack篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来webpack篇专栏内容:webpack介绍 目录 介绍 一、webpack 1.1、webpack是什么 1.2 webpack五个核心配置 1.…...
如何在 Ubuntu20.04 安装FTP Server vsftpd
1.安装: sudo apt-get install vsftpd 2.启动 sudo service vsftpd start //启动 sudo service vsftpd stop //停止 sudo service vsftpd restart //重新启动 3.打开配置文件 sudo nano /etc/vsftpd.conf 4.配置:限制在指定目录&…...
基于FPGA的DDS信号发生器(图文并茂+深度原理解析)
篇幅有限,本文详细源文件已打包 至个人主页资源,需要自取...... 前言 DDS(直接数字合成)技术是先进的频率合成手段,在数字信号处理与硬件实现领域作用关键。它因低成本、低功耗、高分辨率以及快速转换时间等优点备受认可。 本文着重探究基于 FPGA 的简易 DDS 信号发生器设…...
QT:绘制事件和定时器
1.绘制时针 xx.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include<QPainter> #include <QTime>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpubl…...
【算法——递归回溯】
这个东西还是很重要的,直接决定了你的动态规划章节的学习深度 78. 子集 方法1: vector<vector<int>>V; void dfs(vector<int> v,vector<int> nums,int index) {if(indexnums.size()) V.push_back(v);else{v.push_back(nums[i…...
手机在网状态接口的使用和注意事项
手机在网状态接口是用于查询手机号码在运营商数据库中的实时状态的工具,这种接口在互联网金融、贷款、租赁、保险等相关行业中尤为重要,因为它可以帮助这些行业进行更有效的风控审核。以下是对手机在网状态接口的详细介绍: 一、手机在网状态…...
WebGl 使用uniform变量动态修改点的颜色
在WebGL中,uniform变量用于在顶点着色器和片元着色器之间传递全局状态信息,这些信息在渲染过程中不会随着顶点的变化而变化。uniform变量可以用来设置变换矩阵、光照参数、材料属性等。由于它们在整个渲染过程中共享,因此可以被所有使用该着色…...
Leetcode 划分字母区间
题目要求: 将字符串 s 划分成尽量多的片段,保证每个片段中出现的字母不会出现在其他片段中。 具体解释如下: 尽量多的片段:题目要求的是在划分过程中,我们要尽量让划分的片段数量最大化,而不是最少化。每…...
可编辑div遇到的那些事
在日常开发中有时可能会遇到input 或 textarea 不能满足的开发场景,比如多行输入的情况下,textarea 的右下角icon 无法去除, 所以此时可以使用div 设置可编辑状态,完成功能开发,在开发的过程中仍会遇到一下问题。 1,如…...
什麼是高速HTTP代理?
高速HTTP代理是一種用於加速和優化互聯網連接的技術。它通過在用戶和目標網站之間充當仲介伺服器,幫助用戶快速訪問網路資源。HTTP代理不僅可以提高訪問速度,還能提供一定程度的隱私保護和安全性。 高速HTTP代理的工作原理 HTTP代理伺服器位於用戶設備…...
三子棋(C 语言)
目录 一、游戏设计的整体思路二、各个步骤的代码实现1. 菜单及循环选择的实现2. 棋盘的初始化和显示3. 轮流下棋及结果判断实现4. 结果判断实现 三、所有代码四、总结 一、游戏设计的整体思路 (1)提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
