用示例说明filter()与find()的用法以及children()与find()的区别分析


Posted in Javascript onApril 26, 2013

jquery的find()方法与filter()方法对于初学者来说容易混淆,在这里对这两个方法通过一个小例子来进行比较和说明。旨在了解这两种方法的区别。

html代码

<div class="css">
     <p class="rain">测试1</p>
</div>
<div class="rain">
     <p>测试2</p>
</div>

先看看find()方法
$("div").find(".rain").css('color', '#FF0000');
//等价于:$("div .rain").css('color','#ff0000');
//也等价于:$(".rain","div").css('color','#ff0000');

显示结果:

用示例说明filter()与find()的用法以及children()与find()的区别分析

问题:这里为什么“测试2”不变为红色?

find() 方法定义:它是获得当前元素集合中每个元素的后代,通过选择器、jQuery 对象或元素来筛选。

find()方法要注意的地方:find()方法是在当前元素集合内部查找。不包括自己。

上面例子中$("div")包含两个元素。第一个元素符合要求。但第二个元素div本身的class虽然是"rain",但其内部没有class=rain。所以不符合。

下面使用filter()方法看看有什么新玩意

$("div").filter(".rain").css('color', '#FF0000');

显示结果:

用示例说明filter()与find()的用法以及children()与find()的区别分析
filter()方法定义:filter() 方法将匹配元素集合缩减为指定选择器的元素。

意思就是对匹配元素的集合,用选择器测试每个元素本身(不是后代),符合选择器的元素包含在集合中,不符合的去掉(选择器就是起过滤作用)。形成一个新的结果集。

在上面例子中:find()会在div元素内部(后代)寻找 class为rain 的元素。而filter()则是筛选div的class为rain的元素。一个是对它的子集操作,一个是对自身集合元素筛选。

在看两个filter()方法的例子:例一  例二

使用filter()方法的第二个形式是,通过函数而不是选择器来筛选元素。对于每个元素,如果该函数返回 true,则元素会被包含在已筛选集合中;否则,会排除这个元素。

看一下下面的例子:

---------------------------
来自网页的消息
---------------------------
The code is in your clipboard now
---------------------------
确定   
---------------------------

$('li').filter(function(index) {
  return $('strong', this).length == 1;
}).css('background-color', 'red');


结果如下:
用示例说明filter()与find()的用法以及children()与find()的区别分析

这里在顺便说一下find()方法和children()方法的区别

find()方法上面已经说过了,在此不在熬述,下面说一下children()方法。

children,表面意思就是:孩子,儿童,子女的意思。我一般这里理解为子女或儿子。为什么这样理解?下面先看一下children的定义吧

children()方法定义:它是获得匹配元素集合中每个元素的所有子元素。(不包括自己,只能在儿子辈(第一层)查找) 

find() 方法定义:       它是获得当前元素集合中每个元素的后代,通过选择器、jQuery 对象或元素来筛选。

我理解是children是匹配集合中每个元素的“儿子辈”的子元素。find()除了儿子辈,还包括孙子辈。即只要是它的后代就行。

下面通过一个例子来看看:

<!DOCTYPE html>
<html>
<head>
<script language="JavaScript" type="text/JavaScript" src="http://lock.5186.me/js/jQuery1.6.2.js"></script>
<style>
  body {font-size:16px; font-weight:bolder;}
  p {margin:5px 0;}
</style>
</head>
<body>
  <div>
    <span>Hello</span>
    <span>
      <p class="selected">test</p>
    </span>
    <p>And One Last Time</p>
    <p class="selected">again</p>
  </div>
  <p class="selected">Hello Again</p>
<script>$("div").children(".selected").css("color", "blue");</script>
</body>
</html>

结果如下图所示:

用示例说明filter()与find()的用法以及children()与find()的区别分析

Javascript 相关文章推荐
对象的类型:本地对象(1)
Dec 29 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
浅析jQuery的链式调用之each函数
Dec 03 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
Mar 10 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
May 30 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
VScode格式化ESlint方法(最全最好用方法)
Sep 10 Javascript
uni-app实现点赞评论功能
Nov 25 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
Sep 21 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 #Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
Apr 26 #Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 #Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 #Javascript
关于jquery.validate1.9.0前台验证的使用介绍
Apr 26 #Javascript
jQuery.Validate验证库的使用介绍
Apr 26 #Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 #Javascript
You might like
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
一段实时更新的时间代码
2006/07/07 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
JavaScript 异步调用
2017/10/25 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
python字符串排序方法
2014/08/29 Python
python中os模块详解
2016/10/14 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
python代码编写计算器小程序
2020/03/30 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
大专学生推荐信范文
2013/11/19 职场文书
大学生自荐信
2013/12/11 职场文书
优秀教师主要事迹
2014/02/01 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
品德评语大全
2014/05/05 职场文书
2014年科室工作总结
2014/11/20 职场文书
付款证明格式范文
2015/06/19 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
Go Plugins插件的实现方式
2021/08/07 Golang