jQuery选择器之层次选择器用法实例分析


Posted in jQuery onFebruary 19, 2019

本文实例讲述了jQuery选择器之层次选择器用法。分享给大家供大家参考,具体如下:

前面一篇介绍了几种基本的jQuery选择器,今天归纳一下jQuery的层次选择器。DOM元素之间的层次关系主要包括元素的子元素、后代元素、相邻元素和兄弟元素等,我们可以通过DOM元素之间的层次关系来获取想要的元素。为了更好的学习,我们先列出一段HTML代码:

<body>
  <div id="one" class="aaa">
    id=one,class=aaa的div
    <br />
    <div class="mini">class=mini</div>
  </div>
  <div id="two" class="aaa">
    id=two,class=aaa的div
    <br />
    <div class="mini">class=mini的div</div>
    <div class="mini">class=mini的div</div>
  </div>
  <div class="bbb">
    class=bbb的div
    <div class="mini">class=mini的div</div>
    <div class="mini">class=mini的div</div>
  </div>
  <span>^^span元素^^</span>
  <span>--span元素--</span>
</body>

1、后代元素选择器

选择器:ancestor descendant
描述:在给定的祖先元素下匹配所有的后代元素。
返回值:元素集合

示例:

<script type="text/javascript">
  $(document).ready(function(){
    $("body div").css("background","#ffbbaa");
  });
</script>

2、子元素选择器

选择器:parent > child
描述:在给定的祖先元素下匹配所有的子元素。
返回值:元素集合

示例:

<script type="text/javascript">
  $(document).ready(function(){
    $("body > div").css("background","#ffbbaa");
    $("body > div.aaa").css("background", "#ffbbaa");
  });
</script>

3、相邻元素选择器

选择器:prev + next
描述:匹配所有紧接在 prev 元素后的 next 元素(prev和next必须是相邻的兄弟关系)。
返回值:元素集合

示例:

<script type="text/javascript">
  $(document).ready(function(){
    //【写法1】写法1与写法2等价
    $("#one + span").css("background","#ffbbaa");
    //【写法2】
    $("#one").next("span").css("background","#ffbbaa");
    //【写法3】写法3、写法4与写法5等价
    $("#one").nextAll("span:first").css("background","#ffbbaa");
    //【写法4】
    $("#one").nextAll("span:eq(0)").css("background","#ffbbaa");
    //【写法5】
    $("#one").nextAll("span").eq(0).css("background","#ffbbaa");
  });
</script>
  • 当#one元素之后存在兄弟span元素,但span元素均与#one元素不相邻时,写法3、写法4和写法5可以查询到结果,写法1和写法2查询不到结果。
  • 当#one元素之后存在相邻的兄弟span元素时,写法1、写法2、写法3、写法4和写法5查询到的结果相同。

4、兄弟元素选择器

选择器:prev ~ siblings
描述:匹配 prev 元素之后的所有siblings兄弟元素。
返回值:元素集合

示例:

<script type="text/javascript">
  $(document).ready(function(){
    //【写法1】写法1与写法2等价
    $("#two ~ div").css("border","1px solid #ffbbaa");
    $(".mini:eq(1) ~ div").css("border","1px solid #ffbbaa");
    //【写法2】
    $("#two").nextAll("div").css("border","1px solid #ffbbaa");
    $(".mini:eq(1)").nextAll("div").css("border","1px solid #ffbbaa");
  });
</script>

5、prev()和prevAll()

筛选方法:prev()
描述:取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合。
返回值:元素集合

示例:

<script type="text/javascript">
  $(document).ready(function(){
    //【写法1】
    $("span:first").prev(".bbb").css("background", "#ffbbaa");
    //【写法2】写法2、写法3和写法4等价
    $("span:first).prevAll(".bbb:first").css("background", "#ffbbaa");
    //【写法3】
    $("span:first).prevAll(".bbb:eq(0)").css("background", "#ffbbaa");
    //【写法4】
    $("span:first).prevAll(".bbb").eq(0).css("background", "#ffbbaa");
  });
</script>
  • 当span:first元素之前存在兄弟.bbb元素,但.bbb元素均与span:first元素不相邻时,写法2、写法3和写法4可以查询到结果,写法1查询不到结果。
  • 当span:first元素之前存在相邻的兄弟.bbb元素时,写法1、写法2、写法3和写法4查询到的结果相同。

筛选方法:prevAll()
描述:查找当前元素之前所有的同辈元素。
返回值:元素集合

示例:

<script type="text/javascript">
  $(document).ready(function(){
    $("#two").prevAll("div").css("background", "#ffbbaa");
  });
</script>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 jQuery
jquery写出PC端轮播图实例
Jan 26 jQuery
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
AJAX在JQuery中的应用详解
Jan 30 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
jQuery zTree插件快速实现目录树
Aug 16 jQuery
jquery 时间戳转日期过程详解
Oct 12 jQuery
使用jQuery实现购物车
Oct 29 jQuery
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 #jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 #jQuery
jQuery事件多次绑定与解绑问题实例分析
Feb 19 #jQuery
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 #jQuery
jQuery AJAX与jQuery事件的分析讲解
Feb 18 #jQuery
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 #jQuery
jQuery插件实现非常实用的tab栏切换功能【案例】
Feb 18 #jQuery
You might like
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
php通用防注入程序 推荐
2011/02/26 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
Python实现的RSS阅读器实例
2015/07/25 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
详解Python if-elif-else知识点
2018/06/11 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
python小白学习包管理器pip安装
2020/06/09 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
继承公证书格式
2015/01/26 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
高一军训口号
2015/12/25 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
springboot用户数据修改的详细实现
2022/04/06 Java/Android