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 相关文章推荐
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
js图片轮播插件的封装
Jul 21 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
微信小程序前端自定义分享的实现方法
Jun 13 Javascript
vue中的过滤器及其时间格式化问题
Apr 09 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 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函数常用用法小结
2010/02/08 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
vue生命周期的探索
2019/04/03 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
Python入门篇之对象类型
2014/10/17 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
Python列表推导式实现代码实例
2020/09/09 Python
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
机电一体化职业规划书
2014/01/07 职场文书
介绍信模板
2015/01/31 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
学校体育节班级口号
2015/12/25 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
详解Spring事件发布与监听机制
2021/06/30 Java/Android
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS