在jQuery中整合重复的if函数

时间:2013-05-03 19:28:51

标签: 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).addClass('bar');
        }

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

  });

2 个答案:

答案 0 :(得分:8)

您可以这样做:

['foo', 'bar', 'baz'].forEach(function(v){
   if (myText.match(v)) myEl.addClass(v);
});

或者,如果你想与IE8兼容(它没有forEach):

$.each(['foo', 'bar', 'baz'], function(_, v){
   if (myText.match(v)) myEl.addClass(v);
});

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

答案 1 :(得分:3)

具有正则表达式的选项:

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