若要通过DOM 元素之间的层次关系来获取元素,如后代元素,子元素,相邻元素和同辈元素,使用jQuery的层次选择器将会是最佳选择。
jQuery层次选择器和CSS的层次选择器相同,他们都是根据获取元素与其父元素,子元素,兄弟元素等的关系而构成的选择器。
jQuery中有四种层次选择器:

  1. 后代选择器
  2. 子选择器
  3. 相邻元素选择器
  4. 同辈元素选择器

最常用的是后代和子选择器。

名称

描述

返回值

示例

后代选择器

选取父元素里的所有后代元素

元素集合

$("#menu span")选取menu下的所有元素

子选择器

选取父元素下的子元素

元素集合

$("#menu>span")选取menu下的子元素

相邻元素选择器

选择紧邻元素的元素

元素 集合

$(“h2+d1”)选取紧邻

元素之后的同辈元素

同辈元素选择器

选取指定元素 之后的所有同辈元素

元素集合

$(“h2~d1”)选取

元素之后所有的同辈元素


<!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>