一旦你通过JQuery创建了选择器,你就可以对此进行更为深入的遍历。遍历可以分为三个基本组成部分,父节点、子节点和兄弟节点。JQuery为这些部分提供了许多丰富易用的方法。
<div class="grandparent">
<span class="subchild"></span>
<div class="surrogateParent1"></div>
<div class="surrogateParent2"></div>
|
通过选择器来寻找父节点的方法有.parent()、.parents()、.parentsUntil()和 .closest()。
$( "span.subchild" ).parent();
$( "span.subchild" ).parents( "div.parent" );
$( "span.subchild" ).parents();
$( "span.subchild" ).parentsUntil( "div.grandparent" );
$( "span.subchild" ).closest( "div" );
$( "div.child" ).closest( "div" );
|
通过选择器来寻找子节点的方法有.children()和.find()。两者的区别在于,.children()方法只能寻找直接子节点,而.find()方法可以遍历所有的子节点,包括子节点的子节点。
$( "div.grandparent" ).children( "div" );
$( "div.grandparent" ).find( "div" );
|
JQuery提供了一些基本的通过选择器来寻找兄弟节点的方法,你可以使用.prev()方法寻找前一个节点,可以使用.next()方法寻找后一个节点,可以使用.siblings()方法寻找两边的节点。另外还有.nextAll()、.nextUntil()、.prevAll()和.prevUntil()等方法。
$( "div.parent" ).next();
$( "div.parent" ).prev();
$( "div.parent" ).nextAll();
$( "div.parent" ).nextAll().first();
$( "div.parent" ).nextAll().last();
$( "div.surrogateParent2" ).prevAll();
$( "div.surrogateParent2" ).prevAll().first();
$( "div.surrogateParent2" ).prevAll().last();
|
使用.siblings()方法可以选择所有的兄弟节点。
$( "div.parent" ).siblings();
$( "div.surrogateParent1" ).siblings();
|
小范围少次数的遍历是比较合适的,应该尽量避免遍历跨越大片的文档或者从一个容器到另一个容器。