当前位置: 首页 > news >正文

【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 库&#xff0c;它极大地简化了前端开发的工作。无论是 DOM 操作、事件处…...

网站在对抗机器人攻击的斗争中失败了

95% 的高级机器人攻击都未被发现&#xff0c;这一发现表明当前的检测和缓解策略存在缺陷。 这表明&#xff0c;虽然一些组织可能拥有基本的防御能力&#xff0c;但他们没有足够的能力应对更复杂的攻击。 例如利用人工智能和机器学习来模仿人类行为的攻击。 这些统计数据强调…...

Centos7 搭建logstash

下载并安装公共签名密钥&#xff1a; sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 创建一个名为 /etc/yum.repos.d/logstash.repo 的文件&#xff0c;并添加以下内容&#xff1a; [logstash-7.x] nameElastic repository for 7.x packages baseu…...

面试题:Redis(五)

1. 面试题 面试问 记录对集合中的数据进行统计 在移动应用中&#xff0c;需要统计每天的新增用户数和第2天的留存用户数&#xff1b; 在电商网站的商品评论中&#xff0c;需要统计评论列表中的最新评论&#xff1b; 在签到打卡中&#xff0c;需要统计一个月内连续打卡的用户数&…...

LeetCode18.四数之和

题目链接&#xff1a;18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 这道题是在三数之和上改编出来的&#xff0c;在写这道题之前可以尝试以下三数之和&#xff08;15. 三数之和 - 力扣&#xff08;LeetCode&#xff09;&#xff09;&#xff1b; 1.常规解法&#xf…...

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(); 写文件的两个…...

黑龙江网络安全等级保护办理机制

黑龙江的网络安全等级保护机制根据《网络安全法》和相关法规要求&#xff0c;信息系统按照安全等级从低到高分为五级&#xff0c;分别为一般、重要、非常重要、特别重要和特别敏感。不同等级的信息系统必须实施相应的安全措施&#xff0c;以确保系统免受内外部威胁&#xff0c;…...

小红的行列式构造

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小红希望你构造一个3阶行列式&#xff0c;满足每个元素的绝对值不小于1&#xff0c;且行列式的值等于xxx。你能帮帮她吗&#xff1f; 输入描述: 一个整数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 完整指南

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Webpack篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来webpack篇专栏内容:webpack介绍 目录 介绍 一、webpack 1.1、webpack是什么 1.2 webpack五个核心配置 1.…...

如何在 Ubuntu20.04 安装FTP Server vsftpd

1.安装&#xff1a; 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.配置&#xff1a;限制在指定目录&…...

基于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…...

【算法——递归回溯】

这个东西还是很重要的&#xff0c;直接决定了你的动态规划章节的学习深度 78. 子集 方法1&#xff1a; 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…...

手机在网状态接口的使用和注意事项

手机在网状态接口是用于查询手机号码在运营商数据库中的实时状态的工具&#xff0c;这种接口在互联网金融、贷款、租赁、保险等相关行业中尤为重要&#xff0c;因为它可以帮助这些行业进行更有效的风控审核。以下是对手机在网状态接口的详细介绍&#xff1a; 一、手机在网状态…...

WebGl 使用uniform变量动态修改点的颜色

在WebGL中&#xff0c;uniform变量用于在顶点着色器和片元着色器之间传递全局状态信息&#xff0c;这些信息在渲染过程中不会随着顶点的变化而变化。uniform变量可以用来设置变换矩阵、光照参数、材料属性等。由于它们在整个渲染过程中共享&#xff0c;因此可以被所有使用该着色…...

Leetcode 划分字母区间

题目要求&#xff1a; 将字符串 s 划分成尽量多的片段&#xff0c;保证每个片段中出现的字母不会出现在其他片段中。 具体解释如下&#xff1a; 尽量多的片段&#xff1a;题目要求的是在划分过程中&#xff0c;我们要尽量让划分的片段数量最大化&#xff0c;而不是最少化。每…...

可编辑div遇到的那些事

在日常开发中有时可能会遇到input 或 textarea 不能满足的开发场景&#xff0c;比如多行输入的情况下&#xff0c;textarea 的右下角icon 无法去除, 所以此时可以使用div 设置可编辑状态&#xff0c;完成功能开发&#xff0c;在开发的过程中仍会遇到一下问题。 1&#xff0c;如…...

什麼是高速HTTP代理?

高速HTTP代理是一種用於加速和優化互聯網連接的技術。它通過在用戶和目標網站之間充當仲介伺服器&#xff0c;幫助用戶快速訪問網路資源。HTTP代理不僅可以提高訪問速度&#xff0c;還能提供一定程度的隱私保護和安全性。 高速HTTP代理的工作原理 HTTP代理伺服器位於用戶設備…...

三子棋(C 语言)

目录 一、游戏设计的整体思路二、各个步骤的代码实现1. 菜单及循环选择的实现2. 棋盘的初始化和显示3. 轮流下棋及结果判断实现4. 结果判断实现 三、所有代码四、总结 一、游戏设计的整体思路 &#xff08;1&#xff09;提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…...

HWS赛题 入门 MIPS Pwn-Mplogin(MIPS_shellcode)

解题所涉知识点&#xff1a; 泄露或修改内存数据&#xff1a; 堆地址&#xff1a;栈地址&#xff1a;栈上数据的连带输出(Stack Leak) && Stack溢出覆盖内存libc地址&#xff1a;BSS段地址&#xff1a; 劫持程序执行流程&#xff1a;[[MIPS_ROP]] 获得shell或flag&am…...

纯血鸿蒙启动公测,爱加密鸿蒙加固平台发布,助力鸿蒙应用安全运营!

鸿蒙系统打破了移动操作系统两极格局&#xff0c;实现操作系统核心技术的自主可控、安全可靠&#xff0c;在神州大地上掀起一波科技革新的浪潮&#xff0c;HarmonyOS NEXT成为大型企业必须要布局的应用系统之一。 HarmonyOS NEXT于10月8日正式开启公测&#xff0c;距离面向全体…...

MySQL中 truncate、drop和delete的区别

MySQL中 truncate、drop和delete区别 truncate 执行速度快&#xff0c;删除所有数据&#xff0c;但是保留表结构不记录日志事务不安全&#xff0c;不能回滚可重置自增主键计数器 drop 执行速度较快&#xff0c;删除整张表数据和结构不记录日志事务不安全&#xff0c;不能回…...

什么开放式耳机值得买?开放式耳机推荐排行榜!

长时间佩戴传统入耳式耳机有时可能会影响耳道健康&#xff0c;鉴于此&#xff0c;转而选择不入耳设计的开放式耳机就成了不少人的新倾向&#xff0c;它们有助于减少细菌滋生和耳道闷热的烦恼。为了帮助大家找到合适的选项&#xff0c;下面我将列举一些市面上口碑不错的开放式耳…...

Apache Doris的分区与分桶详解

目录 第一章 Doris介绍和分区分桶作用 1.1 Doris背景介绍 1.2 分区与分桶的意义 第二章 原理解析 2.1 分区机制 2.1.1 定义 2.1.2 类型 2.1.3 工作原理 2.2 分桶机制 2.2.1 概念 2.2.2 实现方式 2.2.3 与分区的关系 第三章 手动分区与自动分区对比 3.1 手动分区 …...

docker详解介绍+基础操作 (二)info详解

1 docker相关信息和优化配置 1&#xff09;查看docker版本详解 rootzz:~# docker version Client: Docker Engine - CommunityVersion: 27.3.1API version: 1.47Go version: go1.22.7Git commit: ce12230Built: Fri Sep 20 11:40:…...

C0023.在Clion中创建控件,对控件进行提升为自定义控件的步骤

新建Ui界面文件 修改新生成的ui文件头文件 关闭之前打开的ui文件&#xff0c;如上图Qt Designer中打开的&#xff0c;然后修改新生成的ui文件对应的头文件&#xff0c;改成自己需要的控件类即可。 提升控件为自定义类 将如下头文件中的类名和头文件名输入到提升窗口中&#…...

探索 C# 常用第三方库与框架

在 C# 开发中&#xff0c;第三方库和框架极大地提高了开发效率和代码质量。通过这些库&#xff0c;开发者可以快速处理 JSON 数据、简化对象映射、记录日志、以及高效地与数据库交互。本文将介绍四个常用的 C# 第三方库&#xff1a;Newtonsoft.Json、AutoMapper、NLog/Serilog …...

NodeJS GRPC简单的例子

1. 定义 .proto 文件 首先&#xff0c;创建一个 .proto 文件&#xff0c;定义服务和消息&#xff1a; syntax "proto3";package helloworld;service Greeter {rpc SayHello (HelloRequest) returns (HelloReply) {}rpc SayHelloAgain (HelloRequest) returns (Hel…...

无人机之三维航迹规划篇

一、基本原理 飞行环境建模&#xff1a;在三维航迹规划中&#xff0c;首先需要对飞行环境进行建模。这包括对地形、障碍物、气象等因素进行准确的测量和分析&#xff0c;以获得可行的飞行路径。 飞行任务需求分析&#xff1a;根据无人机的任务需求&#xff0c;确定航迹规划的…...