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

 更新时间:2013年04月26日 14:20:23   作者:  
本篇文章介绍了,用示例说明filter()与find()的用法以及children()与find()的区别分析。需要的朋友参考下

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');

显示结果:

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

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

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

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

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

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

显示结果:


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');


结果如下:

这里在顺便说一下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>

结果如下图所示:

相关文章

  • asp.net 30分钟掌握无刷新 Repeater

    asp.net 30分钟掌握无刷新 Repeater

    经过数个版本的迭代后, JQueryElement 3.3.0 版本中的 Repeater 基本上已经完善, 这里将分功能的总结讲解一下 Repeater 的使用方法.
    2011-09-09
  • jQuery实现手势解锁密码特效

    jQuery实现手势解锁密码特效

    这篇文章主要为大家详细介绍了jQuery实现手势解锁密码特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • jQuery插件分享之分页插件jqPagination

    jQuery插件分享之分页插件jqPagination

    jqPagination 是一个简单易用的轻量级 jQuery分页插件,其使用了 HTML5 和 CSS3 技术来实现。此插件提供了几个参数设置选项,通过简单的配置即可生成分页控件。此外,它的外观样式是可自定义的,扩展性很强。
    2014-06-06
  • 基于JQuery的实现图片轮播效果(焦点图)

    基于JQuery的实现图片轮播效果(焦点图)

    用JQuery操作DOM确实很方便,并且JQuery提供了非常人性化的API应付我们的各种需求,其中选择器在此示例-JQuery实现图片轮播效果上体现的尤为出色。大大简化了js的代码。
    2010-09-09
  • 基于jPlayer三分屏的制作方法

    基于jPlayer三分屏的制作方法

    jPlayer是一个JavaScript写的完全免费和开源的jQuery多媒体库插件,这篇文章主要介绍了基于jPlayer三分屏的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • jQuery操作JSON的CRUD用法实例

    jQuery操作JSON的CRUD用法实例

    这篇文章主要介绍了jQuery操作JSON的CRUD用法,实例分析了jQuery进行CURD的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • jQuery 翻牌或百叶窗效果(内容三秒自动切换)

    jQuery 翻牌或百叶窗效果(内容三秒自动切换)

    jQuery 翻牌或百叶窗效果(内容三秒自动切换),让列表内容不再枯燥
    2012-06-06
  • DIV外区域Click后关闭DIV的实现代码

    DIV外区域Click后关闭DIV的实现代码

    首先看下JS的事件模型,JS事件模型为向上冒泡,如onclick事件在某一DOM元素被触发后,事件将跟随节点向上传播,直到有click事件绑定在某一父节点上,如果没有将直至文档的根
    2011-12-12
  • jquery实现无限分级横向导航菜单的方法

    jquery实现无限分级横向导航菜单的方法

    这篇文章主要介绍了jquery实现无限分级横向导航菜单的方法,实例分析了基于jQuery插件操作html与对应样式实现导航菜单效果的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • JQuery1.6 使用方法三

    JQuery1.6 使用方法三

    JQuery1.6 使用方法三,想要学习jquery的朋友可以参考下。
    2011-11-11

最新评论