需求
对于一个jQuery封装后的元素集,需要从中移除不符合给定表达式的元素,从而创建一个新的元素集。
解决方案
jQuery提供一个叫做filter的方法,在jQuery封装后的元素集上使用该方法,可以移除那些不符合给定表达式的元素。简而言之,filter()方法允许对现有元素集进行过滤。这一点和jQuery的find方法有很大不同,与filter相比,find方法通过选择器表达式在现有元素集中搜寻包括子元素在内的新元素。
看一下下面的代码,有助于理解filter方法:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
讨论
除了像上面的例子中给filter方法传一个表达式字符串,还可以通过向filter方法传一个函数来完成过滤工作。上述代码可以被改写为:
alert(
jQuery('a')
.filter(function(index){ return $(this).hasClass('external');})
.length + ' external links'
);
值得注意的是,在以上匿名函数的例子中,匿名函数接受了一个未被使用的名为index的参数。该参数指代当前循环到的元素在元素集中的顺序值,需要时可用于对元素的过滤进行判定。