基于jquery中children()与find()的区别介绍


Posted in Javascript onApril 26, 2013

.children(selector) 方法是返回匹配元素集合中每个元素的所有子元素仅儿子辈)。参数可选,添加参数表示通过选择器进行过滤,对元素进行筛选。

.find(selector)方法是返回匹配元素集合中每个元素的后代参数是必选的,可以为选择器、jquery对象可元素来对元素进行筛选。

.find() 与 .children() 方法类似,不同的是后者仅沿着 DOM 树向下遍历单一层级。这里的children,我理解为儿子,只在儿子这一级遍历。看下例子:

.children(selector) 方法是返回匹配元素集合中每个元素的所有子元素(仅儿子辈)。参数可选,添加参数表示通过选择器进行过滤,对元素进行筛选。
.find(selector)方法是返回匹配元素集合中每个元素的后代。参数是必选的,可以为选择器、jquery对象可元素来对元素进行筛选。
.find() 与 .children() 方法类似,不同的是后者仅沿着 DOM 树向下遍历单一层级。这里的children,我理解为儿子,只在儿子这一级遍历。看下例子:   

$('ul.level-2').children().css('background-color', 'red');

这行代码的结果是,项目 A, B, C 得到红色背景。由于我们没有应用选择器表达式,返回的 jQuery 对象包含了所有子元素。如果应用一个选择器的话,那么只会包括匹配的项目。

在看个例子:

    <script>  
    $(document).ready(function(){  
        $("#abc").children(".selected").css("color", "blue");  
    });  
    </script>  
    <div id="abc">  
        <span>Hello</span>  
        <p class="selected">Hello Again</p>  
        <div><--换成<p>  
            <div class="selected">And Again</div>  
            <span class="selected">aaAnd Again</span>  
        </div><--换成</p>  
        <p>And One Last Time</p>  
    </div> 

得到的结果如下:

基于jquery中children()与find()的区别介绍

这个是预期的结果,但是如果将上面的<div>换成<p>,见上面代码注释,得到的结果却是:

基于jquery中children()与find()的区别介绍

.find()方法要注意的知识点:

1、find是遍历当前元素集合中每个元素的后代。只要符合,不管是儿子辈,孙子辈都可以。

2、与其他的树遍历方法不同,选择器表达式对于 .find() 是必需的参数。如果我们需要实现对所有后代元素的取回,可以传递通配选择器 '*'。

3、find只在后代中遍历,不包括自己。

4、选择器 context 是由 .find() 方法实现的;因此,$('li.item-ii').find('li') 等价于 $('li', 'li.item-ii')。

选择器的语法是:jQuery(selector, [context])

一般情况对jquery的选择器的用法,都是做为第一个参数的用法。其实jquery()函数的这种用法还可以传递第二个参数。传递这个参数的目的是将前面选择器限定在context这个环境中。在默认情况下,即不传第二个参数,选择器从文档根部对 DOM 进行搜索($()将在当前的HTML document中查找DOM元素);如果指定了第二个参数,如一个DOM元素集或jquery对象,那就会在这个context中查找。

下面看个例子

$("div.foo").click(function() {  
    $("span", this).addClass("bar");  
});

由于我们已经将 span 选择器限定到 this 这个环境中,只有被点击元素中的 span 会得到附加的class。
在内部,选择器 context是通过 .find() 方法实现的,因此 $("span", this) 等价于 $(this).find("span"),$('li.item-ii').find('li') 等价于 $('li', 'li.item-ii')

find()更多内容请访问:http://www.w3school.com.cn/jquery/traversing_find.asp

children()更多内容请访问:http://www.w3school.com.cn/jquery/traversing_children.asp

Javascript 相关文章推荐
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
Dec 26 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
May 31 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
javascript高级模块化require.js的具体使用方法
Oct 31 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
May 02 Javascript
uniapp实现可以左右滑动导航栏
Oct 21 Javascript
基于jQuery选择器的整理集合
Apr 26 #Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 #Javascript
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 #Javascript
jquery中.add()的使用分析
Apr 26 #Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 #Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 #Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 #Javascript
You might like
php多文件上传功能实现原理及代码
2013/04/18 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
ext 代码生成器
2009/08/07 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
py中的目录与文件判别代码
2008/07/16 Python
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python生成随机MAC地址
2015/03/10 Python
在Python中使用SQLite的简单教程
2015/04/29 Python
Python随机数random模块使用指南
2016/09/09 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python实现顺序表的简单代码
2018/09/28 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
销售人员自我评价怎么写
2013/09/19 职场文书
房产公证委托书范本
2014/09/20 职场文书
资金申请报告范文
2015/05/14 职场文书
教师节表彰会主持词
2015/07/06 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers