2

将其合并为一个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');
        }

  });
4

2 回答 2

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)myElasmyEl已经是一个 jQuery 对象。

于 2013-05-03T19:30:40.700 回答
3

An option with regular expressions:

 var matches = myText.match(/foo|var|baz/g);
 if(matches) myEl.addClass(matches.join(" "));
于 2013-05-03T20:06:46.533 回答