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 相关文章推荐
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
jquery实现图片放大点击切换
Jun 06 jQuery
jquery实现搜索框功能实例详解
Jul 23 jQuery
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
jquery.pagination.js分页使用教程
Oct 23 jQuery
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
jquery+php后台实现省市区联动功能示例
May 23 jQuery
jQuery实现聊天对话框
Feb 08 jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
jQuery实现购物车全功能
Jan 11 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生成EXCEL的东东
2006/10/09 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
python+tkinter实现学生管理系统
2019/08/20 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
Python bisect模块原理及常见实例
2020/06/17 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
公司接待方案
2014/03/08 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
新手初学Java网络编程
2021/07/07 Java/Android