轻松学会jQuery选择器的用法

news2025/7/9 6:34:50

文章目录

    • ⛳️ 选择器
      • ✨ 属性选择器
      • ✨ 包含选择器
      • ✨ 位置选择器
      • ✨ 过滤选择器
      • ✨ 反向选择器
    • ⛳️ 快速投票

⛳️ 选择器

在这里插入图片描述
  本篇重点讲解jQuery中丰富的选择器,以及他们的基本用法。CSS的选择器均可以用jQuery的$进行选择,部分浏览器对CSS3的选择器支持不全,可以用jQuery作为补充,所以本篇重点介绍jQuery扩展的选择器

✨ 属性选择器

  属性选择器的语法是在标记的后面用方括号[和]添加相关的属性,然后赋予其不同的逻辑关系。jQuery中的属性选择器的用法如下:

属性选择器说明
E.C选中所有名称为E的标记,并且属性类别为C;如果去掉E,就是属性选择器.C
E#I选中所有名称为E的标记,并且id为I;如果去掉E,就是id选择器#I
E[A]选中所有名称为E的标记,并且设置了属性A
E[A=V]选中所有名称为E的标记,并且设置了属性A的值为V
E[A^=V]选中所有名称为E的标记,并且设置了属性A的值以V开头
E[A$=V]选中所有名称为E的标记,并且设置了属性A的值以V结尾
E[A*=V]选中所有名称为E的标记,并且设置了属性A的值中包含V

【1】追加、移除和切换样式

  追加用法:$(‘p’).addClass(‘test’);

  移除用法:$(‘p’).removeClass(‘demo’);

备注:p为标记,test和demo为标记的class属性值。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>追加和移除样式</title>
		<style>
			.demo{
				color: #f00;
				font-size: 30px;
			}
			
			.test{
				background-color: #ccc;
				border: 1px solid #00f;
				border-radius: 10px;
			}
		</style>
		<script src="js/jQuery-3.6.1.js"></script>
	</head>
	<body>
		<p class="demo">段落标签</p>
		<button>追加样式</button>
		<button>移除样式</button>
	</body>
</html>

效果展示:
请添加图片描述

  以上代码定义了HTML框架,以及相关的CSS类别,供测试使用,此时的显示效果是点击后无任何反应。

  如果希望在页面中选择设置了demo属性的标记,并给标记添加或者移除某个样式,可以使用如下方法实现。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>追加和移除样式</title>
		<style>
			.demo{
				color: #f00;
				font-size: 30px;
			}
			
			.test{
				background-color: #ccc;
				border: 1px solid #00f;
				border-radius: 10px;
			}
		</style>
		<script src="js/jQuery-3.6.1.js"></script>
	</head>
	<body>
		<p class="demo">段落标签</p>
		<button>追加样式</button>
		<button>移除样式</button>
	</body>
	<script>
		$(function(){
			//获取添加样式的按钮,并添加点击事件
			$('button:first').click(function(){
				$('p').addClass('test');
			});
			
			//获取添加样式的按钮,并添加点击事件
			$('button:last').click(function(){
				$('p').removeClass('demo');
			});
		});
	</script>
</html>

效果展示:
在这里插入图片描述
  不管是追加还是移除,在实际操作中,都不便于具体得使用逻辑,我们大多数使用逻辑都是喜欢点击一个按钮能喜欢两种样式的切换,所以有toggleClass()方法帮我们实现切换样式的需求。

  切换用法:$(‘p’).toggleClass(‘demo’);

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>切换样式</title>
		<script src="js/jQuery-3.6.1.js"></script>
		<style>
			.demo{
				color: #f00;
				font-size: 36px;
				background-color: #ccc;
			}
		</style>
	</head>
	<body>
		<p>段落标签</p>
		<button>切换样式</button>
	</body>
	<script>
		$(function(){
			$('button').click(function(){
				$('p').toggleClass('demo');
			});
		});
	</script>
</html>

运行效果:
在这里插入图片描述
【2】根据属性值添加样式

案例原始代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jQuery-3.6.1.js"></script>
		<style type="text/css">
			a{
				text-decoration: none;
				color: #000;
			}
			.myClass{
				/* 设定某个CSS类别 */
				background-color: #d0baba;
				color: #5f0000;
				text-decoration: underline;
			}
		</style>
	</head>
	<body>
		<ul>
			<li><a href="http://www.artech.com">信息列表</a>
				<ul>
					<li><a href="https://***.sina.com.cn/">新浪</a></li>
					<li><a href="https://***.baidu.com/" title="百度">百度</a></li>
					<li><a href="https://***.qq.com/">腾讯</a></li>
					<li><a href="https://***.google.cn/" title="谷歌">谷歌</a></li>
				</ul>
			</li>
		</ul>
	</body>
</html>

原始代码运行效果:
在这里插入图片描述

  如果希望在页面中选择设置了title属性的标记,并给这些超链接添加myClass样式,则可以使用如下代码:

	<script>
		$(function(){
			$('a[title]').addClass('myClass');
		});
	</script>

运行效果:
在这里插入图片描述

  如果希望根据属性值进行判断,例如href属性值为https://***.baidu.com/的超链接添加myClass样式,则可以用如下代码:

	<script>
		$(function() {
			$("a[href='https://***.baidu.com/']").addClass("myClass");
		});
	</script>

运行效果:
在这里插入图片描述
  以上两种比较简单的属性选择器,jQuery还可以根据属性值的某一部分进行匹配,例如下面代码选中的href属性值以http://开头的所有超链接。

	<script>
		$(function() {
			$("a[href^='http://']").addClass("myClass");
		});
	</script>

运行效果:
在这里插入图片描述
  既然可以根据属性值的开头来匹配选择,自然也可以根据属性值的结尾$=来匹配选择,如下代码可以选中href属性值以cn/结尾的超链接集合,这种方法通常用于选取网站中的某些资源,例如所有的.jpg图片、所有的.pdf文件等。

	<script>
		$(function() {
			$("a[href$='cn/']").addClass("myClass");
		});
	</script>

运行结果:
在这里插入图片描述
  另外,还可以利用*=进行任意匹配,例如下面的代码选中href属性值中包含字符串com的所有超链接,并添加样式:

	<script>
		$(function() {
			$("a[href*='com']").addClass("myClass");
		});
	</script>

运行效果:
在这里插入图片描述

✨ 包含选择器

  jQuery中还提供了包含选择器,用于选择包含某种特殊标记的元素。

包含选择器说明
E:has(F)选中所有名称为E的标记,并且该标记包含F标记

  同样采用上述例子中的HTML框架,下面的代码表示选中包含超链接的所有li标记:

	<script>
		$(function() {
			$("ul li ul li:has(a)").addClass("myClass");
		});
	</script>

运行效果:
在这里插入图片描述

✨ 位置选择器

  CSS3中还允许用过标记所处的位置来对其进行选择,这里的位置是指元素在DOM中所处的位置。页面中几乎所有的标记都可以运用位置选择器,下面的例子展示了jQuery中位置选择器的使用。

位置选择器说明
:first获取第一个元素
:last获取最后一个元素
:odd匹配所有索引值为奇数的元素,从0 开始计数
:even匹配所有索引值为偶数的元素,从0 开始计数
:eq(n)匹配一个给定索引值的元素
:gt(n)匹配所有大于给定索引值的元素
:lt(n)匹配所有小于给定索引值的元素
:first-child匹配第一个子元素
:last-child匹配最后一个子元素
:only-child如果某个元素是父元素中唯一的子元素,将会被匹配
:nth-child(n)第n个元素
:nth-child(odd/even)所有奇数号或者偶数号的子元素
:nth-child(xn+y)利用公式计算子元素的位置

注意:nth-child()选择器编号是从1开始,而其他选择器从0开始。

原始案例代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jQuery-3.6.1.js"></script>
		<style>
			div{
				font-size: 12px;
				border:1px solid #003a75;
				margin: 5px;
			}
			p{
				margin: 0;
				padding: 4px 10px;
			}
			.myClass{
				/* 设定某个CSS类别 */
				color: beige;
				background-color: #003a75;
				text-decoration: underline;
			}
		</style>
	</head>
	<body>
		<div>
			<p>1.大礼堂</p>
			<p>2.清华学堂</p>
		</div>
		<div>
			<p>3.图书馆</p>
		</div>
		<div>
			<p>4.紫荆公寓</p>
			<p>5.C楼</p>
			<p>6.清清地下</p>
		</div>
	</body>
</html>

原始代码运行效果:
在这里插入图片描述
  如果希望在页面中选择每个div块的第一个p标记,则可以通过:first-child来选择,代码如下:

	<script>
		$(function(){
			$('p:first-child').addClass('myClass');
		});
	</script>

运行效果:
在这里插入图片描述
  如果希望在页面中选择第n个p标记,则可以通过::eq(n-1)来选择,代码如下:

	<script>
		$(function(){
			$('p:eq(3)').addClass('myClass');
		});
	</script>

运行效果:
在这里插入图片描述

✨ 过滤选择器

  除了CSS3中的一些选择器,jQuery也提供了很多自定义的过滤选择器,用来处理更复杂的选择问题。例如很多时候希望知道用户所勾选的多选项,如果通过属性的值来判断,那么只能获得初始状态下的勾选情况。

过滤选择器说明
:animated选择所有处于动画中的元素
:button选择所有按钮
:checkbox选择所有多选项
:contains(foo)选择所有包含文本foo的元素
:disabled选择页面中被禁用的元素
:enabled选择页面中没有被禁用的元素
:file选择上传文件的元素
:header选择所有标题元素
:hidden选择页面中被隐藏的元素
:image选择图片提交按钮
:input选择表单元素
:not(filter)反向选择
:parent选择所有拥有子元素(包括文本)的元素,空元素被排除
:password选择密码框
:radio选择单选框
:reset选择重置按钮
:selected选择下拉菜单中被选中的项
:submit选择提交按钮
:text选择文本输入框
:visible选择页面中所有可见元素

案例代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jQuery-3.6.1.js"></script>
		<style type="text/css">
			form{
				font-size:12px;
				margin:0;
				padding:0;
			}
			input .btn{
				border:1px solid #005079;
				color: #005079;
				font-family: Arial, Helvetica, sans-serif;
				font-size: 12px;
			}
			.myClass+label{
				background-color: #F00;
				text-decoration: underline;
				color: #fff;
			}
		</style>
	</head>
	<body>
		<form name="myForm">
			<input type="checkbox" name="sports" id="football"><label for="football">足球</label><br>
			<input type="checkbox" name="sports" id="basketball"><label for="basketball">篮球</label><br>
			<input type="checkbox" name="sports" id="volleyball"><label for="volleyball">排球</label><br>
			<br><input type="button" value="Show Checked" onclick="ShowChecked('sports')" class="btn">
		</form>
	</body>
	<script>
			function ShowChecked(oCheckBox){
				//使用:checked过滤出被用户选中的复选框
				$('input[name='+oCheckBox+']:checked').addClass('myClass');
			}
	</script>
</html>

运行效果:
请添加图片描述
  以上代码中有3个复选框,通过jQuery的过滤器:checked便可以很容易地筛选出用户选中的复选项,并赋予其特殊的CSS样式。

✨ 反向选择器

  上述过滤选择器中的:not(filter)选择器可以尽享反向选择,其中filter参数可以是任意的其它过滤选择器,例如下面的代码表示input标记中所有非radio元素:
    input:not(:radio)

  反向选择器也可以使用链式编写方式,例如:
    $(‘:input:not:(:checkbox):not(:radio)’).addClass(‘myClass’);
  表示所有表单元素中(input、select、textarea或button)非checkbox和非radio的元素,这里需要注意input与:input的区别。

  此外,在:not(filter)中,filter参数必须是过滤选择器,而不能是其它选择器。下面的代码表示的是典型的错误写法:
    $(‘div:not(p:hidden)’);

  正确写法为:
    $(‘div p:not(:hidden)’);

⛳️ 快速投票

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大道至简,凯里亚德酒店成为酒店投资圈万众瞩目的“新”星

作为近年酒店市场的热门领域&#xff0c;中端酒店行业的发展一直颇受关注。随之而来的就是中端酒店品牌的不断增加&#xff0c;以及中端商旅、度假型酒店规模的不断扩大&#xff0c;经行业资深人士分析&#xff0c;未来中端酒店将成为酒店市场的主力产品。鉴于市场的发展趋势&a…

Netty中的缓存Bytebuf

首先我们来明确一下Buffer&#xff08;缓存&#xff09; JavaNIO中的Buffer、Netty中的Buffer、Netty中的Bytebuf这是3个不同的类&#xff0c;但实现的内容和完成的功能几乎一致&#xff0c;最原始的是JavaNIO中的Buffer实现&#xff0c;最先进的是Netty中Bytebuf的实现&#x…

10 分钟, 带你彻底掌握 SQL 多表查询

1.前言 多表查询&#xff0c;也称为多表连接查询&#xff1b;作为关系型数据库最主要的查询方式&#xff0c;在日常工作中被广泛使用 常见的多表查询操作包含&#xff1a;子查询、内连接、左外连接、右外连接、完全连接、交叉连接 本篇文章将利用一个实例逐一介绍这些操作 …

【华为OD机试真题 python】 太阳能板最大面积【2022 Q4 | 100分】

■ 题目描述 给航天器一侧加装长方形或正方形的太阳能板&#xff08;图中的红色斜线区域&#xff09;&#xff0c;需要先安装两个支柱&#xff08;图中的黑色竖条&#xff09;&#xff0c;再在支柱的中间部分固定太阳能板。 但航天器不同位置的支柱长度不同&#xff0c;太阳能…

做一名既有宽度也有深度的测试!

一名好的测试人员&#xff0c;在工作中&#xff0c;不仅要做到有宽度更要有深度&#xff01; 何为宽度&#xff1f;测试用例的覆盖面更广更全。 测试人员设计测试用例的时候可以分为这几种类型&#xff1a; 一&#xff1a;将prd的需求描述copy到测试用例。 二&#xff1a;细…

Java线程安全与对象头结构信息

文章目录一 线程安全问题1.1 什么是线程安全问题&#xff1f;1.2 自增运算真的线程安全吗&#xff1f;1.3 Synchronized锁表现三种形势&#xff1f;1.3.1 synchronized同步方法1.3.2 synchronized同步代码块1.3.3 synchronized静态方法1.3.4 总结二 Java对象结构与内置锁2.1 Ja…

浏览器自动化利器Selenium IDE使用指南

文章目录前言一、安装及界面1.1 安装1.2 界面二、常用命令2.1 通用2.2 表单2.3 流程控制三、常用操作3.1 命令操作3.2 js脚本3.3 录制3.4 导出四、实际操作例子4.1 红黑树插入可视化4.2 github下载参考前言 Selenium 是一个浏览器自动化框架&#xff0c;专门为 W3C WebDriver …

创龙AD+全志T3 TL7606I模块测试

上一篇&#xff1a;创龙AD全志T3 ad_display 开发案例(2) 前 言 本文主要介绍基于全志科技T3(ARM Cortex-A7)处理器的8/16通道AD采集开发案例&#xff0c;使用核芯互联CL1606/CL1616AD芯片&#xff0c;亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 …

力扣(LeetCode)775. 全局倒置与局部倒置(C++)

模拟 理解题&#xff0c;全局倒置就是不相邻的逆序对&#xff0c;局部倒置就是相邻的逆序对。提示中给出&#xff0c;0<nums[i]<n0 < nums[i] < n0<nums[i]<n &#xff0c;其中 nnums.lengthn nums.lengthnnums.length , numsnumsnums 中的所有整数 互不相…

什么是 rektguy NFT系列?

rektguy 系列是一组闪烁着霓虹灯颜色的饮酒骷髅 该项目背后的团队没有提出路线图或分支项目 艺术家 OSF 已经在 NFT 生态系统中拥有一个成熟的粉丝群体 rektguy NFT系列由 8,814 个 NFT 组成&#xff0c;展示了穿着连帽衫、用瓶子喝水的骷髅。这些人物由深黑色背景上闪烁的霓…

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移 文章: Local Color Transfer via Probabilistic Segmentation by Expectation-Maximization,[paper][code(未公开)] 本文目的为: 图像局部颜色迁移. 1-符号说明 在进行本文算法原理说明之前, 先对一些英文缩写进行简单说明: …

一次nacos 导致的 CPU 飙高问题

序 今天下午突然 出现 测试环境 cpu飙高&#xff0c;干到了 60%&#xff0c;其他项目 响应时间明显变长。。。有点吓人&#xff0c;不想背锅 项目背景 出问题的项目是 需要连接各个不同nacos 和不同的 namespace 进行对应操作的 一个项目&#xff0c;对nacos的操作都是httpC…

JavaScript break 、 continue和return 语句介绍

目录 一、Break 1、介绍 2、代码&#xff1a; 3、示例&#xff1a; 二、Continue 1、介绍 2、代码 3、示例 三、break 、continue总结&#xff1a; 代码 示例 四、Return 1、简介 2、语法&#xff1a; 3、代码 4、示例 五、return、break、continue总结 1、re…

02【MyBatis框架的CRUD】

二、MyBatis框架的CRUD 重新搭建一个新的MyBatis环境&#xff0c;进行MyBatis的CRUD测试&#xff1b; 参考&#xff1a;01【MyBatis-快速入门】 2.1 新增 2.1.1 dao接口 package com.dfbz.dao;/*** author lscl* version 1.0* intro:*/ import com.dfbz.entity.Emp;public i…

秒杀系统设计(微服分布式)

流程图(分布式) 例子 现场要卖1000件下面这个婴儿纸尿裤&#xff0c;根据以往这样秒杀活动的数据经验来看&#xff0c;目测来抢这100件纸尿裤的人足足有10万人 问题 高并发 秒杀的特点就是这样时间极短、 瞬间用户量大。 正常的店铺营销都是用极低的价格配合上短信、APP的…

自制操作系统日记(6):静态桌面初步

代码仓库地址&#xff1a;https://github.com/freedom-xiao007/operating-system 简介 在上篇中我们成功的加载跳转执行了C语言的代码&#xff0c;本篇中将跟随书籍&#xff0c;初步展示了一个系统页面的初步界面&#xff0c;看到桌面那刻还是有点意思的 最终结果展示 不多…

贵的键盘就一定好吗?程序员该怎样选择一款适合自己的键盘呢,来这里参考下吧

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

唯亚威VIAVIFiberChek Sidewinder光纤手持式检测仪

唯亚威FiberChek Sidewinder 是业界“全功能”手持式检测和分析解决方案&#xff0c;适用于诸如 MPO 等多光纤连接器。唯亚威VIAVI 屡获殊荣的 FiberChek 系列中的这款最新产品提供了一个完全自动化的解决方案&#xff0c;可对 MPO 或其他多光纤连接器中的每条光纤进行检测和分…

C. Peaceful Rooks(并查集找环)

Problem - 1411C - Codeforces 题意: 你会得到一个nn的棋盘。棋盘的行和列从1到n编号。单元格(x,y)位于列号x和行号y的交点上。 车是一个棋子&#xff0c;它可以在一个回合内垂直或水平地移动任何数量的单元。棋盘上有m个车(m<n)&#xff0c;其放置方式是没有一对车互相攻…

空间金字塔池化Spatial Pyramid Pooling

1. 概述 通常在卷积神经网络CNN中主要是由卷积层&#xff08;包括Convolution和Pooling两部分组成&#xff09;和全连接层组成&#xff0c;对于任意一张大小的图片&#xff0c;通常需要通过裁剪或者拉伸变形的方式将其转换成固定大小的图片&#xff0c;这样会影响到对图片的识…