用示例说明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 相关文章推荐
载入进度条 效果
Jul 08 Javascript
javascript动画浅析
Aug 30 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
如何改进javascript代码的性能
Apr 02 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 Javascript
vue.js指令v-model实现方法
Dec 05 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 Javascript
基于jquery二维码生成插件qrcode
Jan 07 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
Aug 10 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
JavaScript去除空格的几种方法
2006/10/03 Javascript
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
js null undefined 空区别说明
2010/06/13 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
2017/12/22 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
企划主管岗位职责
2013/12/12 职场文书
护士检查书
2014/01/17 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
财政专业求职信范文
2014/02/19 职场文书
《白鹅》教学反思
2014/04/13 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
物业品质提升方案
2014/06/08 职场文书
春游踏青活动方案
2014/08/14 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
学习十八大的感悟
2015/08/11 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书