通过一个例子了解filter()和find()的用法/children()与find()区别
来源:互联网 发布:如何运用app源码 编辑:程序博客网 时间:2024/05/21 16:57
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,则元素会被包含在已筛选集合中;否则,会排除这个元素。
看一下下面的例子:
<ul> <li><strong>list</strong> item 1 - one strong tag</li> <li><strong>list</strong> item <strong>2</strong> - two <span>strong tags</span></li> <li>list item 3</li> <li>list item 4</li> <li>list item 5</li> <li>list item 6</li></ul>
$('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>结果如下图所示:
- 通过一个例子了解filter()和find()的用法/children()与find()区别
- find() 和 children()的区别
- 一个例子看清楚JQuery子元素选择器children()和find()的区别
- find()和filter()函数的用法区别
- find children 的区别
- jQuery中filter()和find()的区别深入了解
- jquery中find与children的区别
- jQuery中children()和find()的区别
- jquery中find()和children()的区别
- jquery的find和children区别
- jquery中filter,children,find三者的区别?
- filter()和find()的区别
- find()和filter()的区别
- jQuery:find()与children()区别
- jQuery中filter()和find()和has()的用法区别
- jquery中children()与find()用法区别详解
- find()与filter()区别
- jQuery中 filter()与find()的用法
- 一步一步学Remoting系列文章
- 解决SWFUpload上传文件组件使用时报告2049错误
- 全面解释 StringBuilder、StringBuffer 和String的关系
- Python的print 格式化输出
- ASP.NET Forms身份认证
- 通过一个例子了解filter()和find()的用法/children()与find()区别
- MySQL-Cluster7.2.8中关于视图问题
- SQL-Server2005mssqlserver服务与sqlexpress服务有什么区别
- 慌乱的表情,泄露了我的悲伤:伤感心情日志
- C#事务
- IT人,请爱惜你的身体
- cmd 注册所有组件
- css中!important的作用
- 零元學Expression Blend 4 - Chapter 41 Flash做的到的Blend也可以!輕鬆製作擁有動畫的MenuBar!(中)