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 相关文章推荐
jquery 最简单易用的表单验证插件
Feb 27 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
JavaScript类继承及实例化的方法
Jul 25 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
jQuery滚动监听实现商城楼梯式导航效果
Mar 06 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
详解js动态获取浏览器或页面等容器的宽高
Mar 13 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 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 读取文件的正确方法
2009/04/29 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
js实现导航吸顶效果
2017/02/24 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
js里面的变量范围分享
2020/07/18 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python Deque 模块使用详解
2014/07/04 Python
python导入模块交叉引用的方法
2019/01/19 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
渡河少年教学反思
2014/02/12 职场文书
银行求职信怎么写
2014/05/26 职场文书
体育运动口号
2014/06/09 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
十八大宣传标语
2014/10/09 职场文书
环境卫生标语
2015/08/03 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书