【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)提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...