您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2014年08月26日 09:08

原创 jQuery.filter() 函数详解

6986 次浏览 读完需要≈ 7 分钟

内容目录

filter()函数用于筛选出符合指定表达式的元素,并以jQuery对象的形式返回。

这里的表达式包括:选择器(字符串)、DOM元素(Element)、jQuery对象、函数。

该函数属于jQuery对象(实例)。

语法

jQueryObject.filter( expr )

参数

参数 描述
expr String/Element/jQuery/Function类型指定的表达式。

如果expr参数为字符串,则将其视作jQuery选择器,用以表示该选择器所匹配的元素。

jQuery 1.4 新增支持:参数expr可以为DOM元素(Element)或jQuery对象

如果expr参数为函数,filter()函数将根据匹配的所有元素遍历执行该函数,函数中的this将指向当前迭代的元素。filter()还会为函数传入两个参数:第一个参数即当前元素在匹配元素中的索引,第二个参数就是当前元素。

迭代元素时,如果函数expr的返回值为true,则表示当前元素满足筛选条件。

返回值

filter()函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象的匹配元素中所有符合筛选条件的元素。

如果没有满足条件的元素,则返回空的jQuery对象。

filter()函数并不会更改当前jQuery对象的元素匹配,筛选的结果只反映在作为返回值的新的jQuery对象中。

示例&说明

filter()函数与复合选择器具有以下等价代码:

// 这里的s1、s2均表示任意的选择器
$("s1").filter("s2");
// 等价于
$("s1s2");

以下面这段HTML代码为例:

<div id="n1">
	<div id="n2" class="n2">
		<ul id="n3" data_id="12">
			<li id="n4">item1</li>
			<li id="n5" class="foo bar">item2</li>
			<li id="n6" class="level-2">item3</li>
		</ul>
	</div>
	<div id="n7" class="n7">
		<input id="n8" name="codeplayer" type="text" value="1">
		<input id="n9" name="codeplayer" type="checkbox" checked="checked" value="1">
	</div>
</div>

以下jQuery示例代码用于演示filter()函数的具体用法:

/* $("li") 匹配n4、n5、n6这3个元素 */

//筛选出所有索引为偶数(序号为奇数)的元素,即n4、n6
document.writeln( $("li").filter( ":even" ).length ); // 2
//筛选出包含类名foo的元素,即n5
document.writeln( $("li").filter( $(".foo") ).length ); // 1
//筛选出所有带有class属性的元素,即n5、n6
document.writeln( $("li").filter( "[class]" ).length ); // 2


/* $("input") 匹配n8、n9这两个元素 */

//筛选出选中的元素,即n9
document.writeln( $("input").filter( ":checked" ).length ); // 1
var input = document.getElementsByName("codeplayer");
//筛选出所有的input元素,即n8、n9
document.writeln( $("input").filter( input ).length ); // 2


//$("div") 匹配n1、n2、n7这3个元素

//筛选出id和class属性相等的元素,即n2、n7
var $result = $("div").filter( function(index, element){
	// 函数内的this === element
	return this.id == this.className; 
} );
document.writeln( $result.length ); // 2

运行代码

  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论

打开导航菜单