在jQuery中合并重复的if函数

在jQuery中合并重复的if函数,jquery,if-statement,conditional-statements,Jquery,If Statement,Conditional Statements,将其合并为一个if语句的正确方法是什么 $('span').filter(function() { var myEl = $(this); var myText = myEl.text(); if (myText.match('foo')) { $(myEl).addClass('foo'); } if (myText.match('bar')) { $(myEl).addCla

将其合并为一个
if
语句的正确方法是什么

$('span').filter(function() {

    var myEl = $(this);
    var myText = myEl.text();

        if (myText.match('foo')) {
            $(myEl).addClass('foo');
        }

        if (myText.match('bar')) {
            $(myEl).addClass('bar');
        }

        if (myText.match('baz')) {
            $(myEl).addClass('baz');
        }

  });

您可以这样做,例如:

['foo', 'bar', 'baz'].forEach(function(v){
   if (myText.match(v)) myEl.addClass(v);
});
或者,如果您希望与IE8兼容(IE8尚未兼容):


请注意,我将
$(myEl)
替换为
myEl
,因为
myEl
已经是jQuery对象。

带有正则表达式的选项:

 var matches = myText.match(/foo|var|baz/g);
 if(matches) myEl.addClass(matches.join(" "));

为什么这些都是
.filter()
中的内容?将其转换为函数?+1。我是用
$(['foo','bar','baz'])编写代码的。每个(function(){})都是
,我知道有更好的方法:D外观great@Ejay事实上,使用
$。each
(而不是
。each
)可以避免在与IE8兼容时导入垫片。感谢您提供的有用建议:)<代码>$。每个(['foo',bar',baz']),函数(v){
我想你有一个额外的
 var matches = myText.match(/foo|var|baz/g);
 if(matches) myEl.addClass(matches.join(" "));