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 相关文章推荐
js压缩利器
Feb 20 Javascript
JS 动态加载脚本的4种方法
May 05 Javascript
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
Javascript学习笔记9 prototype封装继承
Jan 11 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
Jun 05 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
Dec 25 Javascript
jquery中ajax学习笔记3
Oct 16 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
JS与SQL方式随机生成高强度密码示例
Dec 29 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
May 16 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
用PHP生成html分页列表的代码
2007/03/18 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
vue组件与复用详解
2018/04/08 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
JS中数据结构之栈
2019/01/01 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python2.x与Python3.x的区别
2016/01/14 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
python实现电脑自动关机
2018/06/20 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
竞选宣传委员演讲稿
2014/05/24 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
外出学习心得体会范文
2016/01/18 职场文书