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 DataSet数据源处理代码
Mar 29 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
Apr 25 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
JS实现一个按钮的方法
Feb 05 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
Javascript实现倒计时时差效果
May 18 Javascript
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
node.js中的url.parse方法使用说明
2014/12/10 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
用原生js做单页应用
2017/01/17 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python增加图像对比度的方法
2019/07/12 Python
python实现图片九宫格分割
2021/03/07 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
如何使用Pytorch搭建模型
2020/10/26 Python
幼师自我鉴定
2014/02/01 职场文书
新农村建设标语
2014/06/24 职场文书
药店促销活动总结
2014/07/10 职场文书
汽车转让协议书
2015/01/29 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
2015中秋祝酒词
2015/08/12 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers