基于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 相关文章推荐
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
Jul 19 Javascript
JScript 脚本实现文件下载 一般用于下载木马
Oct 29 Javascript
JavaScript中模拟实现jsonp
Jun 19 Javascript
详解JavaScript的策略模式编程
Jun 24 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
JavaScript数组复制详解
Feb 02 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
Jun 01 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
PHP5中MVC结构学习
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
php下载文件的代码示例
2012/06/29 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
简单实现js浮动框
2016/12/13 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
python显示天气预报
2014/03/02 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
python 以16进制打印输出的方法
2018/07/09 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python编写单元测试代码实例
2020/09/10 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
毕业生优秀推荐信
2013/11/26 职场文书
学习决心书范文
2014/03/11 职场文书
继承公证书样本
2014/04/04 职场文书
房产协议书范本
2014/10/18 职场文书
区域销售大会开幕词
2016/03/04 职场文书
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
如何利用python创作字符画
2022/06/25 Python
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL