一旦你通过JQuery创建了选择器,你就可以对此进行更为深入的遍历。遍历可以分为三个基本组成部分,父节点、子节点和兄弟节点。JQuery为这些部分提供了许多丰富易用的方法。
<div class="grandparent">
<div class="parent">
<div class="child">
<span class="subchild"></span>
</div>
</div>
<div class="surrogateParent1"></div>
<div class="surrogateParent2"></div>
</div>
  • 父节点
    通过选择器来寻找父节点的方法有.parent()、.parents()、.parentsUntil()和 .closest()。
 
// 选择一个元素的父节点
// 返回 [ div.child ]
$( "span.subchild" ).parent();
// 选择匹配选择器元素的所有父节点
// 返回 [ div.parent ]
$( "span.subchild" ).parents( "div.parent" );
// 返回 [ div.child, div.parent, div.grandparent ]
$( "span.subchild" ).parents();
// 选择元素所有父节点,但是不包含指定选择器的元素
// 返回 [ div.child, div.parent ]
$( "span.subchild" ).parentsUntil( "div.grandparent" );
// 选择最近的父节点,需要注意的是仅仅会有一个父节点被选择,搜索的内容还包含了选择器本身
// 返回 [ div.child ]
$( "span.subchild" ).closest( "div" );
// 返回 [ div.child ] 选择器本身也包含在内
$( "div.child" ).closest( "div" );
  • 子节点
    通过选择器来寻找子节点的方法有.children()和.find()。两者的区别在于,.children()方法只能寻找直接子节点,而.find()方法可以遍历所有的子节点,包括子节点的子节点。
// 选择一个元素的直接子节点。
// 返回 [ div.parent, div.surrogateParent1, div.surrogateParent2 ]
$( "div.grandparent" ).children( "div" );
// 寻找所有匹配选择器的元素
// 返回 [ div.child, div.parent, div.surrogateParent1, div.surrogateParent2 ]
$( "div.grandparent" ).find( "div" );
  • 兄弟节点
    JQuery提供了一些基本的通过选择器来寻找兄弟节点的方法,你可以使用.prev()方法寻找前一个节点,可以使用.next()方法寻找后一个节点,可以使用.siblings()方法寻找两边的节点。另外还有.nextAll()、.nextUntil()、.prevAll()和.prevUntil()等方法。
// 选择下一个兄弟节点
// 返回 [ div.surrogateParent1 ]
$( "div.parent" ).next();
// 选择前一个兄弟节点
// 返回 [] 这里div.parent不存在前一个兄弟节点
$( "div.parent" ).prev();
// 选择所有后面的兄弟节点
// 返回 [ div.surrogateParent1, div.surrogateParent2 ]
$( "div.parent" ).nextAll();
// 返回 [ div.surrogateParent1 ]
$( "div.parent" ).nextAll().first();
// 返回 [ div.surrogateParent2 ]
$( "div.parent" ).nextAll().last();
// 选择所有前面的兄弟节点
// 返回 [ div.surrogateParent1, div.parent ]
$( "div.surrogateParent2" ).prevAll();
// 返回 [ div.surrogateParent1 ]
$( "div.surrogateParent2" ).prevAll().first();
// 返回 [ div.parent ]
$( "div.surrogateParent2" ).prevAll().last();

使用.siblings()方法可以选择所有的兄弟节点。

// 选择所有的兄弟节点
// 返回 [ div.surrogateParent1, div.surrogateParent2 ]
$( "div.parent" ).siblings();
// 返回 [ div.parent, div.surrogateParent2 ]
$( "div.surrogateParent1" ).siblings();
    小范围少次数的遍历是比较合适的,应该尽量避免遍历跨越大片的文档或者从一个容器到另一个容器。

JQuery官方学习资料(译):遍历的更多相关文章

  1. JQuery官方学习资料(译):遍历JQuery对象和非JQuery对象

        JQuery提供了一个对象遍历的Utility方法$.each()和一个JQuery集合遍历方法.each(). $.each()     $.each()是一个通用的方法用来遍历对象和数组, ...

  2. JQuery官方学习资料(译):Utility方法

        JQuery提供了一些utility方法在$命名空间里,这些方法对完成常规的编程任务非常有帮助. $.trim()     删除前后部的空白内容. // 返回 "lots of ex ...

  3. JQuery官方学习资料(译):类型

    类型     JavaScript提供了多个内置数据类型.除了这些,这份文档还将介绍一些虚拟类型,例如选择器.伪类.事件等. String 在JavaScript中字符串是一个不可变的对象,它包含无. ...

  4. JQuery官方学习资料(译):使用JQuery的.index()方法

        .index()是一个JQuery对象方法,一般用于搜索JQuery对象上一个给定的元素.该方法有四种不同的函数签名,接下来将讲解这四种函数签名的具体用法. 无参数的.index() < ...

  5. JQuery官方学习资料(译):Data方法

        你可能经常会想需要通过元素来存储一些数据.在JavaScript中你可能需要给元素添加属性来实现这样的功能,但是在某些浏览器中,你可能还需要处理因此造成的内存泄露问题.JQuery提供了一个简 ...

  6. JQuery官方学习资料(译):CSS

        JQuery提供了一个处理方法,可以获取或设置元素的CSS属性. // 获取 CSS 属性 $( "h1" ).css( "fontSize" ); / ...

  7. JQuery官方学习资料(译):JQuery对象

        每当创建一个新的元素(或者选择一个已经存在的元素)时,JQuery将返回一个元素的集合.大部分的开发人员新接触JQuery的时候,都把这个集合当做数组.这个集合中的DOM元素有从零开始的索引, ...

  8. JQuery官方学习资料(译):操作元素

      获取和设置元素的信息     有很多种方式可以改变现有的元素,最常见的是改变HTML内容或者元素的属性.JQuery提供了简单的夸浏览器的方法来帮助你实现元素信息的获取和设置. .html():获 ...

  9. JQuery官方学习资料(译):选择器的运作

    Getters 和 Setters     JQuery的方法重载,方法设置和获取值一般使用相同名称的方法,当一个方法用来设置一个值的时候称之为Setter,当一个方法用来获取一个值的时候称之为Get ...

随机推荐

  1. FPGA计算中定标与位扩展的实现

    我不知道名字取对没有,在FPGA计算中有时往往需要在不溢出的情况下将数扩大,从而获得更好的计算精度. 比如.在一个8位宽的系统中,将x=0000_0010,算术左移m=5位之后得到xt=0100_00 ...

  2. JS全局变量与局部变量

    一句话概括:在函数外声明的变量都为全局变量,在函数内声明的为局部变量. 一.局部变量和全局变量重名会覆盖全局变量 var a = 1; function test1() { var a = 2; al ...

  3. 知乎十万级容器规模的Java分布式镜像仓库实践

    作者:知乎令孤无忌 前言 知乎在 2016 年已经完成了全量业务的容器化,并在自研容器平台上以原生镜像的方式部署和运行,并在后续陆续实施了 CI.Cron.Kafka.HAProxy.HBase.Tw ...

  4. FFmpeg命令行工具学习(二):播放媒体文件的工具ffplay

    一.简述 ffplay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器. 在使用ffplay之前必须要安装到系统中,MAC的安装教程为:http://www.cnblog ...

  5. Android之.9图的知识

    Android之.9图的知识 .9图的介绍 .9图也称为pPatch图,它是android app开发里一种特殊的图片形式,文件的扩展名为:.9.png. 9patch图片的作用就是在图片拉伸的时候保 ...

  6. SpringBoot 项目打包后运行报 org.apache.ibatis.binding.BindingException

    今天把本地的一个SpringBoot项目打包扔到Linux服务器上,启动执行,接口一访问就报错,但是在本地Eclipse中启动执行不报错,错误如下: org.apache.ibatis.binding ...

  7. CSS揭秘—多重边框(二)

    前言: 所有实例均来自<CSS揭秘>,该书以平时遇到的疑难杂症为引,提供解决方法,只能说秒极了,再一次刷新了我对CSS的认知 该书只提供了关键CSS代码,虽然有在线示例代码链接,但访问速度 ...

  8. SpringCache学习实践

    1. SpringCache学习实践 1.1. 引用 <dependency> <groupId>org.springframework.boot</groupId> ...

  9. CMake设置编译参数

    项目中的CMake编译参数一直参照Muduo进行设置. Muduo的CMakeLists.txt中,MAKE_CXX_FLAGS设置较为清晰明了,因此一直在项目中沿用. set(CXX_FLAGS - ...

  10. python高级-深浅拷贝(16)

    一.浅拷贝 浅拷贝是对一个对象的顶层拷贝,通俗地讲就是:拷贝了引用,并没有拷贝内容. a = [1,2,3] print(id(a)) b=a print(b) print(id(b)) a.appe ...