层级选择器能够根据元素之间的结构关系进行匹配操作,主要包括“包含选择器”,“子选择器”,“相邻选择器”,“兄弟选择器”
选择器 | 说 明 |
包含选择器 (ancestor descendant) | 在给定的祖先元素下匹配所有的后代元素。ancestor表示任何有效的选择器,descendant表示用以匹配元素的选择器,并且它是第一个选择器的后代元素。例如$("form input")可以匹配表单下所有的input元素 |
子选择器 (parent > child) | 在给定的父元素下匹配所有的子元素。parent表示任何有效的选择器,child表示以匹配元素的选择器,并且它是第一个选择器的子元素。例如$("form > input ")可以匹配表单下所有的子级input元素 |
相邻选择器 (prev +next) | 匹配所有紧接在prev元素后的next元素。prev表示任何有效的选择器,next表示一个有效原则器并且紧接着第一个选择器。例如$("label input")可以匹配所有跟在label后面的input元素 |
兄弟选择器 (prev ~ siblings) | 匹配prev元素之后的sibligs元素。prev表示任何有效的选择器,siblings表示一个选择器,并且它作为第一个选择器的同辈。例如$("form ~ input ")可以匹配到所有与表单同辈的input元素 |
例子:包含选择器 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>包含选择器</title>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"> </script>
<script type="text/javascript">
$(function(){
$("form input").css({"border":"1px solid red","background":"green",});
})
</script>
</head>
<body>
<form>
<!--<fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段。-->
<fieldset>
<label>
包含的子文本框
<input />
</label>
<fieldset>
<label>
包含的孙文本框
<input />
</label>
</fieldset>
</fieldset>
</form>
<label>
非包含的文本框
<input />
</label>
</body>
</html>
例子:子选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>子选择器</title>
<style>
img
{
height:200px;
}
</style>
</head>
<body>
<div>
<span>
<img src="image/0001.jpg"/>
</span>
<img src="image/0002.jpg"/>
</div>
<img src="image/0003.jpg"/>
</body>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("div > img").css("border","5px solid red");
})
</script>
</html>
例子 : 相邻选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>相邻选择器匹配</title>
<style>
img
{
height:200px;
}
</style>
</head>
<body>
<div>
<span>
<img src="image/0001.jpg"/>
</span>
<img src="image/0002.jpg"/>
</div>
<img src="image/0003.jpg"/>
<img src="image/0004.jpg"/>
</body>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("div + img").css("border","5px solid red");
})
</script>
</html>
例子:兄弟选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>兄弟选择器</title>
<style>
img
{
height:200px;
}
</style>
</head>
<body>
<div>
<span>
<img src="image/0001.jpg" />
</span>
<img src="image/0002.jpg"/>
</div>
<img src="image/0003.jpg"/>
<img src="image/0004.jpg"/>
</body>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("div ~ img").css("border","5px solid red");
})
</script>
</html>
例子:层级选择器综合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>层级选择器控制HTML文档各级元素</title>
</head>
<body>
<div>一级div元素
<div>二级div元素
<div>三级div元素</div>
<p>段落文本11</p>
<p>段落文本12</p>
</div>
<p>段落文本21</p>
<p>段落文本22</p>
</div>
<p>段落文本31</p>
<p>段落文本32</p>
</body>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("div").css("border","1px solid red");//控制文档中所有的div元素
$("div > div").css("background","yellow");//控制div元素包含的div子元素,实际上它与div包含选择器所匹配的元素是相同的
$("div div ").css("border","10px solid green");//控制最外层div元素包含的所有div元素
$("div div div").css("background","blue");//控制第三层及其以内的div元素
$("div + p").css("margin","2em");//控制div相邻的p元素
$("div:eq(1) ~ p").css("background","#ccc");//控制div后面并列的所有p元素
})
</script>
</html>