我有一个HTML看起来像:
<div class="info">
<p>132 Purple Grove</p>
<p>Albany, Texas 76801</p>
<p class="phone">
<span>Phone: (111) 111-1111</span>
</p>
<p class="fax">Fax: (111) 111-1111</p>
</div>
使用cheerio,我想获得一个数组,其中所有p个元素都不具有“ phone”或“ fax”类。
Cheerio没有.not函数,所以我试图用类似这样的过滤器复制它:
var addresslines=$(.info).children('p').filter(function(n){
if(!$(n).hasClass('phone') && !$(n).hasClass('fax')){
return n;
}
});
结果,我得到了以下数组(删除了换行符),该数组过滤出第一个元素,而其他元素则保持不变。我似乎无法理解为什么...
结果:
0 Albany, Texas 76801
1 Phone: (111) 111-1111
2 Fax: (111) 111-1111
小提琴:http://jsfiddle.net/2cPLK/
最佳答案
当过滤器将函数作为参数时,它将使用两个参数填充该函数;第一个是索引,第二个是元素。因此,当前您拥有变量n
的是整数,而不是元素。
var addresslines=$('.info').children('p').filter(function(n, el){
if(!$(el).hasClass('phone') && !$(el).hasClass('fax')){
return el;
}
});
working fiddle