25-讨论
1.5.3 讨论
向 filter() 方法传递一个用于过滤包装器集的函数也是可行的。前一个代码示例中 filter() 方法的参数是一个字符串表达式,现在用一个函数来代替它:
alert(
jQuery('a')
.filter(function(index){ return $(this).hasClass('external');})
.length + ' external links'
);
注意,现在传递给 filter() 方法的是一个匿名函数。调用这个函数的上下文与当前元素相同,也就是说当在函数中使用 $(this) 时,实际应用的是包装器集中的每个DOM元素。在函数中,我将检查包装器集中每个 <a> 元素的类值( hasClass() )是否为 external 。如果是,返回逻辑真值,该元素保留在集合中;否则(返回逻辑假值),从集合中删除元素。也可以这么理解:如果函数返回假值,则删除该元素。如果函数返回其他值,该元素就会留在包装器集中。
你可能已经注意到:这里向函数传递了一个名为 index 的参数,但是并不打算使用它。在必要的时候,这个参数可用来以数字形式指出jQuery包装器集中元素的索引。