基于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中的Document文档对象
Jan 16 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
Jun 12 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
详解RequireJS按需加载样式文件
Apr 12 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
Jan 24 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
用vue 实现手机触屏滑动功能
May 28 Javascript
node.js如何根据URL返回指定的图片详解
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
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
初学Python函数的笔记整理
2015/04/07 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
js实现弹框效果
2021/03/24 Javascript
电子商务专业自我鉴定
2013/12/18 职场文书
医药销售求职信范文
2014/02/01 职场文书
协议书范本
2014/04/23 职场文书
励志演讲稿600字
2014/08/21 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
小鞋子观后感
2015/06/05 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL