一旦用jQuery创建一个初始的包装集,你就能深度遍历刚刚选择的包装集。jQuery为所有这些元件提供丰富易用的方法。注意每一个方法都能轻易的传递给字符串选择器,有一些甚至能够用另外的jQuery对象来过滤你的包装集。
父级
从包装集中寻找父级元素的方法包括.parent(), .parents(), .parentsUntil(), 和 .closest()。
<div class="grandparent">
<div class="parent">
<div class="child">
<span class="subchild"></span>
</div>
</div>
<div class="surrogateParent1"></div>
<div class="surrogateParent2"></div>
</div>
// 选择一个元素的直系父级元素:
// returns [ div.child ]
$( "span.subchild" ).parent();
// 选择一个元素的所有匹配给定选择器的父级元素
// returns [ div.parent ]
$( "span.subchild" ).parents( "div.parent" );
// returns [ div.child, div.parent, div.grandparent ]
$( "span.subchild" ).parents();
//选择一个元素的除了选择器中的元素以外的所有的父级元素:
// returns [ div.child, div.parent ]
$( "span.subchild" ).parentsUntil( "div.grandparent" );
// 选择最靠近的父级元素,注意只有一个父级元素被选中,并且初始元素本身也包含在被搜索的元素中:
// returns [ div.child ]
$( "span.subchild" ).closest( "div" );
// 返回[ div.child ] ,因为选择器包含在被搜索的元素中:
$( "div.child" ).closest( "div" );
子级
从包装集中寻找子级元素的方法包括 .children() and .find()。这两个方法之间的区别在于距离创建的包装集的子结构有多远。.children()仅仅操作直系的子节点,而.find()可以循环遍历子节点,这些子节点的子节点,以此类推。
// 选择元素直系的子节点
// returns [ div.parent, div.surrogateParent1, div.surrogateParent2 ]
$( "div.grandparent" ).children( "div" );
// 在包装集中,查找所有匹配选择器的元素
// returns [ div.child, div.parent, div.surrogateParent1, div.surrogateParent2 ]
$( "div.grandparent" ).find( "div" );