jQuery 过滤方法filter()选择具有特殊属性的元素


Posted in Javascript onJune 15, 2014

现在有这样一种需求,需要选出所有有背景图片的元素.
这个问题有点棘手.我们无法使用选择表达式来完成这个问题了.
使用jQuery的DOM过滤方法filter(),可以根据函数中表达的任何条件选择元素.

jQuery中的过滤器方法允许传递一个字符串(也就是选择器表达式)作为参数.
或者传递的是一个函数.它的返回值将定义某个元素是否被选中.
传递的函数将对当前选择集中的每个元素运行.
当函数返回假时,对应的函数就从选择集中被删除掉.每当返回值为真的时候,对应的元素
不受影响.

jQuery('*').filter(function(){ 
return !!jQuery(this).css('background'); 
});

上述代码选择所有具有背景图片的元素.
初始集合是所有元素(*).然后以一个函数为参数调用filter().
这个函数在每个集合上进行是否有属性background属性的判断,
如果有,则保留.否则,则在结果集中删除这个元素.

你所看到的!! 是javascript中间任何undefined ,空类型,当然还有false.
如果函数调用返回的是这些值,那么函数返回false,从而在集合中删除

没有background属性的元素.
实际上,!!并不是必要的.因为jQuery将把这些返回值转化为Boolean类型.但是保留仍然是一个好的主意.
这样任何人看到你的代码的时候,都能绝对肯定你的意图.(这有助于代码的可读性).

在传递个filter()的函数中,可以通过this关键字引用当前元素.
将它包含在jQuery函数中就变成了一个jQuery对象了.
this //常规的元素对象.
jQuery(this) //jQuery对象.
下面是激发你想象力的一些例子.

jQuery('div').filter(function(){ 
var width = jQuery(this).width; 
return width >100 && widht < 200; 
}); 
//返回子元素有10个或者20个的元素. 
jQuery('*').filter(function(){ 
var children = jQuery(this).childern().length; 
return children ===10 || children ===20; });

下面是一个代码例子:判断有背景颜色的元素,并将它们的背景颜色全部改为黑色。
<html> 
<head> 
<title></title> 
<style type="text/css"> 
.c1{ 
background-color: yellow; 
} 
.c2{ 
background-color: green; 
} 
p{ 
background-color: pink; 
} 
h3{ 
background-color: gray; 
} 
</style> 
</head> 
<body> 
<div class="c1">Bye Bye Beautiful</div> 
<div class="c2">Nothing but the girl</div> 
<p>The Lazy song</p> 
<h2>If I die young</h2> 
<h3>New soul</h3> 
<script type="text/javascript" src="jquery.2.0.3.js"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function($) { 
var ret = $('*').filter(function(index) { 
return !$(this).css('background-color'); 
}); 
$.each(ret, function(index, val) { 
$(val).css('background-color','black'); 
}); 
}); 
</script> 
</body> 
</html>
Javascript 相关文章推荐
Javascript 布尔型分析
Dec 22 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
基于javascript实现最简单的选项卡切换效果
May 16 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
Jun 30 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
JavaScript中的E-mail 地址格式验证
Mar 28 Javascript
Vue 监听列表item渲染事件方法
Sep 06 Javascript
JS实现在线ps功能详解
Jul 31 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
js实现整体缩放页面适配移动端
Mar 31 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 #Javascript
jQuery $.extend()用法总结
Jun 15 #Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
Jun 14 #Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 #Javascript
jQuery Migrate 1.1.0 Released 注意事项
Jun 14 #Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 #Javascript
Ext修改GridPanel数据和字体颜色、css属性等
Jun 13 #Javascript
You might like
实现树状结构的两种方法
2006/10/09 PHP
PHP获取网卡地址的代码
2008/04/09 PHP
php5.3 注意事项说明
2013/07/01 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
php事件驱动化设计详解
2016/11/10 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
"序列点" 是什么
2016/07/29 面试题
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
社区庆八一活动方案
2014/02/02 职场文书
毕业生工作求职信
2014/06/30 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript