如果这是一个重复的问题,我道歉。这是一个用例问题,似乎每个人都有自己的版本。
我想知道这是否可以简化:
if ($('.taxclass').text().indexOf(tax1)>-1 || $('.taxclass').text().indexOf(tax2)>-1) {}
答案 0 :(得分:4)
它很简单,但你可以减少冗余,主要是通过只获取元素文本一次并重用变量:
var text = $('.taxclass').text();
if (text.indexOf(tax1)>-1 || text.indexOf(tax2)>-1) {
}
另一个注意事项可能是通过使用标识符并仅查找不同的元素(如果符合您的需要)而不是每个可能具有类taxclass
的东西来减少DOM的遍历。
答案 1 :(得分:3)
您可以将$('.taxclass').text()
存储在变量中,或使用正则表达式。
var str = $('.taxclass').text();
if (str.indexOf(tax1) > -1 || str.indexOf(tax2) > -1)
// Or with regex
if(/(text1)|(text2)/.test($('.taxclass').text())
{}
答案 2 :(得分:3)
var txt = $('.taxclass').text();
if (txt.indexOf(tax1)>-1 || txt.indexOf(tax2)>-1) {}
答案 3 :(得分:3)
一种超快的方式就是不要复制$('。taxclass')。text()
尝试类似
的内容var tax = $('.taxclass').text();
if (tax.indexOf(tax1)>-1 || tax.indexOf(tax2)>-1) {}
答案 4 :(得分:1)
又快又脏:
text.indexOf(tax1+"~"+tax2)>-1
功能,适用于 n 字符串,但详细:
[tax1, tax2].some(function(s) { return s.indexOf(text)>-1 })
作为原型:
String.prototype.foundIn = function() {
var s=this; return Array.prototype.slice.call(arguments).some(function(m)
{return m.indexOf(s)>-1});
};
用法:
$('.taxclass').text().foundIn(tax1, tax2)
答案 5 :(得分:0)
怎么样:
f = function (x) { return $('.taxclass').text().indexOf(x) > -1; }
if (f(tax1) || f(tax2)) {}