用示例说明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 相关文章推荐
破除网页鼠标右键被禁用的绝招大全
Dec 27 Javascript
jquery+json 通用三级联动下拉列表
Apr 19 Javascript
JavaScript的继承的封装介绍
Oct 15 Javascript
js实现日期级联效果
Jan 23 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
jQuery解析json数据实例分析
Nov 24 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
May 14 Javascript
在一个页面实现两个zTree联动的方法
Dec 20 Javascript
JS实现压缩上传图片base64长度功能
Dec 03 Javascript
JS实现纵向轮播图(初级版)
Jan 18 Javascript
vue+axios全局添加请求头和参数操作
Jul 24 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
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python文本相似性计算之编辑距离详解
2016/11/28 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
经典c++面试题四
2015/05/14 面试题
小学教师评语大全
2014/04/23 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
以权谋私检举信范文
2015/03/02 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书