将此合并为一个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');
}
});
答案 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(" "));