举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历


Posted in Javascript onJuly 07, 2016

一、jQuery的向下遍历

<script src="../JS/Extend.js"></script>
 <script src="../JS/my.js"></script>
 <link type="text/css" rel="stylesheet" href="../CSS3/my.css">

</head>
<body>
<div id="div1">
 <div id="div2">
  <p id="p1">
   <a>hello world</a>
  </p>
 </div>
</div>

#div1{
 width:500px;
 height:200px;
 border:3px solid coral;
}

#div2{
 width:400px;
 height:150px;
 margin-top:10px;
 margin-left:10px;
 border: 3px solid coral;
}

#p1{
 margin-left:10px;
 margin-top:10px;
 width:150px;
 height:80px;
 border:3px solid coral;
}

1.children()方法的元素遍历

$(document).ready( function (){
 $("#div1").children().css({border:"3px solid black"});
});

可以看到此时div1的儿子div2的边框颜色变成了黑色。

2.find()方法的元素遍历

$(document).ready( function (){
 $("#div1").find("a").css({border:"3px solid grey"});
});

可以看到此时div1的重孙子a元素出现了灰色边框。、

.children()与.find()方法的区别是:children只能对元素的儿子元素进行修改,而find则可以对其所有的子元素进行修改。

二、jQuery的向上遍历
顾名思义,向上遍历就是从子集找到父集。

.parent()
$(document).ready( function (){
 $("#div2").parent().css({border:"3px solid black"});
 });

div2的父元素div1边框发生了改变

.parents()
$(document).ready( function (){
 $("a").parents().css({border:"3px solid grey"});
});

a元素除外,a元素的所有父级元素都发生了改变

.parentUntil()
$(document).ready( function (){
  $("a").parentsUntil("#div1").css({border:"3px solid grey"})
});

从a元素到div1元素之前的元素边框发生了改变。

三个方法的区别是,.parent()只能向上遍历一层;.parents()则可以指定父级元素的id进行跨越遍历;.parentUntil()则具有区间性质,将会遍历包含于区间中的所有元素。

三、遍历 - 同级(兄弟)
同级元素拥有相同的父级元素。

在 DOM 树中水平遍历。

有许多有用的方法让我们在 DOM 树进行水平遍历:

  • siblings()
  • next()
  • nextAll()
  • nextUntil()
  • prev()
  • prevAll()
  • prevUntil()

1.JQuery siblings()

siblings() 方法返回被选元素的所有同胞元素。

<section>
 <h1>文章的<span>标题</span>啦</h1>
 <p>文章的内容内容内容内容内容内容</p>
 <p>结尾部分</p>
</section>
$(document).ready(function () {
 // 获取h1标签的所有同级元素
 var elem = $('h1').siblings();
 console.log(elem); // p p 
});

2.JQuery next()

next() 方法返回被选元素的下一个同胞元素

<section>
 <h1>文章的<span>标题</span>啦</h1>
 <p>文章的内容内容内容内容内容内容</p>
 <p>结尾部分</p>
</section>
$(document).ready(function () {
 // 获取h1标签的下一个同级元素
 var elem = $('h1').next();
 console.log(elem); // p
});

3.JQuery nextAll()

nextAll() 方法返回被选元素的所有跟随的同胞元素。

<section>
 <h1>文章的<span>标题</span>啦</h1>
 <p>文章的内容内容内容内容内容内容</p>
 <p>结尾部分</p>
</section>
$(document).ready(function () {
 // 获取p标签的后面的所有同级元素
 var elem = $('p').nextAll();
 console.log(elem); // p
});

4.JQuery nextUntil()

nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。

<section>
 <h1>文章的<span>标题</span>啦</h1>
 <p>文章的内容内容内容内容内容内容</p>
 <p>结尾部分</p>
 <h2>重点注意</h2>
</section>
$(document).ready(function () {
 // 获取
 var elem = $('h1').nextUntil('h2');
 console.log(elem); // p p 
});

5.JQuery prev() & prevAll() & prevUntil()

prev(), prevAll() 以及 prevUntil() 方法的工作方式与上面的方法类似,只不过方向相反而已:它们返回的是前面的同级元素(在 DOM 树中沿着同胞元素向后遍历,而不是向前)。

Javascript 相关文章推荐
Javascript miscellanea -display data real time, using window.status
Jan 09 Javascript
node.js中的fs.read方法使用说明
Dec 17 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
Vue实现点击按钮复制文本内容的例子
Nov 09 Javascript
微信小程序自定义头部导航栏(组件化)
Nov 15 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 #Javascript
简单实现js页面切换功能
Jan 10 #Javascript
JavaScript作用域示例详解
Jul 07 #Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
Jul 07 #Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 #Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 #Javascript
jQuery之简单的表单验证实例
Jul 07 #Javascript
You might like
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
营业经理岗位职责
2013/11/10 职场文书
小学生读书感言
2014/02/12 职场文书
房屋出租委托书格式
2014/09/23 职场文书
婚前协议书标准版
2014/10/19 职场文书
违纪检讨书
2015/01/27 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
微信早安问候语
2015/11/10 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js