背景:
我们可以把文档中的所有的节点节点之间的关系,用传统的家族关系来描述,可以把文档树当作一个家谱,那么节点与节点直接就会存在父子,兄弟,祖孙的关系了。
>(大于号)紧跟父子关系 如$("div > p")
表示选择div下的直接层是p的节点。
+(加号) 紧跟兄弟关系 如$("div + p")
表示选择div同层的左右相邻的p节点。
~ (波浪线)任意距离兄弟关系 如$("div + p")
表示选择div同层的p节点。
选择器 | 描述 |
---|---|
$(“parent > child”) | 子选择器:选择所有指定”parent”元素中指定的”child”的直接子元素 |
$(“ancestor descendant”) | 后代选择器:选择给定祖先ancestor元素的所有后代元素,包括子元素,孙子元素等全部后代元素 |
$(“prev + next”) | 相邻兄弟选择器:选择所有紧接在prev元素后的next元素 |
$(“prev ~ siblings”) | 一般兄弟选择器:匹配“prev”元素之后的所有兄弟元素。具有相同的父元素,并匹配过滤出“siblings”选择器。 |
层级选择器之间的相似与不同点:
1)层级选择器都有一个参考节点
2)后代选择器包含子选择器的选择的内容
3)一般兄弟选择器包含相邻兄弟选择的内容
4)相邻兄弟选择器和一般兄弟选择器所选择到的元素,必须在同一个父元素下.
示例:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" href="imooc.css" type="text/css">
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<h2>子选择器与后代选择器</h2>
<div class="left">
<div class="aaron">
<p>div下的第一个p元素</p>
</div>
<div class="aaron">
<p>div下的第一个p元素</p>
</div>
</div>
<div class="right">
<div class="imooc">
<article>
<p>div下的article下的p元素</p>
</article>
</div>
<div class="imooc">
<article>
<p>div下的article下的p元素</p>
</article>
</div>
</div>
<script type="text/javascript">
//子选择器
//$('div > p') 选择所有div元素里面的直接子元素P
//$('div > p').css("border", "3px groove yellow");
</script>
<script type="text/javascript">
//后代选择器
//$('div p') 选择所有div元素里面的p元素
$('div p').css("border", "1px groove red");
</script>
<h2>相邻兄弟选择器与一般兄弟选择器</h2>
<div class="bottom">
<div>兄弟节点div, +~选择器不能向前选择</div>
<span class="prev">选择器span元素</span>
<div>span后第一个兄弟节点div</div>
<div>兄弟节点div
<div class="small">子元素div</div>
</div>
<span>兄弟节点span,不可选</span>
<div>兄弟节点div</div>
</div>
<script type="text/javascript">
//相邻兄弟选择器
//选取prev后面的第一个的div兄弟节点
$('.prev + div').css("border", "3px groove red");
</script>
<script type="text/javascript">
//一般相邻选择器
//选取prev后面的所有的div兄弟节点
$(".prev ~ div").css("border", "3px groove blue");
</script>
</body>
</html>