当前位置:嗨网首页>书籍在线阅读

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包装器集中元素的索引。