在jQuery中整合重复的if函数

nat*_*web 2 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');
        }

  });
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 8

你可以这样做:

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

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

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

请注意,我替换$(myEl)myElas myEl已经是一个jQuery对象.