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和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
js setTimeout()函数介绍及应用以倒计时为例
Dec 12 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 Javascript
jQuery插件datatables使用教程
Apr 21 Javascript
vuex与组件联合使用的方法
May 10 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
Jun 07 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 05 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中防止SQL注入的最佳解决方法
2013/04/25 PHP
PHP常用处理静态操作类
2015/04/03 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
iframe 异步加载技术及性能分析
2011/07/19 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
python删除列表内容
2015/08/04 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
灵泰克Java笔试题
2016/01/09 面试题
会计专业自荐信
2013/12/02 职场文书
五好党支部事迹材料
2014/02/06 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
法制宣传标语
2014/06/23 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL