如何使用.filter返回多个值?

时间:2014-12-31 15:02:22

标签: javascript jquery

说我有一个div,有一些CSS和javascript:

var someCSS = {
  color: 'red',
};
         

$(".test > .sub").filter(function(index) {
   return $(this).text() == 'hello';
 }).css(someCSS);
.test {
  color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>
  <div class='sub'>hello</div>
  <div class='sub'>stackoverflow</div>
</div>

以上将为'hello'红色着色,但我不明白如何添加更多值,例如'hello'和'stackoverflow'。我显然不能做return $(this).text() == 'hello' || 'stackoverflow';,但我无法弄明白该做什么!

任何建议将不胜感激:)

4 个答案:

答案 0 :(得分:4)

使用值数组然后检查它,这样,您可以根据需要添加更多值,然后您可以使用Array.prototype.indexOf

var arr = ['hello', 'stackoverflow'];

然后

return arr.indexOf($(this).text()) > -1;

答案 1 :(得分:2)

$(".test > .sub").filter(function(index) {
   return $(this).text() == 'hello' || $(this).text() === 'stackoverflow';
 }).css(someCSS);

var values = [
  'hello',
  'stackoverflow'
]

$(".test > .sub").filter(function(index) {
   return values.indexOf($(this).text()) > -1 
 }).css(someCSS);

答案 2 :(得分:1)

关闭,您需要再次进行比较:

return $(this).text() == 'hello' || $(this).text() == 'stackoverflow'

答案 3 :(得分:1)

我对此问题的看法是使用Array.prototype.indexOf()

$(".test > .sub").filter(function(index) {
   return ['hello','stackoverflow'].indexOf($(this).text().trim()) > -1;
 }).addClass('someCSS');

上述方法允许使用您希望使用的字符串数组,而不是显式地比较和评估匿名函数中的多个字符串;尽管如此,在这个例子中,为了简洁起见,我在同一个函数中构造了该数组。

$(".test > .sub").filter(function(index) {
  return ['hello','stackoverflow'].indexOf($(this).text().trim()) > -1;
}).addClass('someCSS');
.someCSS {
  color: #f00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>
  <div class='sub'>hello</div>
  <div class='sub'>stackoverflow</div>
</div>

参考文献: