これが重複した質問である場合は、お詫び申し上げます。これは非常にユースケースの質問なので、誰もが独自のバージョンを持っているようです。
これを単純化できるかどうか疑問に思います。
if ($('.taxclass').text().indexOf(tax1)>-1 || $('.taxclass').text().indexOf(tax2)>-1) {}
これが重複した質問である場合は、お詫び申し上げます。これは非常にユースケースの質問なので、誰もが独自のバージョンを持っているようです。
これを単純化できるかどうか疑問に思います。
if ($('.taxclass').text().indexOf(tax1)>-1 || $('.taxclass').text().indexOf(tax2)>-1) {}
現状では非常に単純ですが、主に要素のテキストを1回だけ取得し、変数を再利用することで、冗長性を少し減らすことができます。
var text = $('.taxclass').text();
if (text.indexOf(tax1)>-1 || text.indexOf(tax2)>-1) {
}
さらに注意すべきことは、識別子を使用し、クラスを持つすべての可能なものではなく、(ニーズに合っている場合は)個別の要素のみを探すことによって、DOMのトラバーサルを減らすことですtaxclass
。
変数に格納することも$('.taxclass').text()
、正規表現を使用することもできます。
var str = $('.taxclass').text();
if (str.indexOf(tax1) > -1 || str.indexOf(tax2) > -1)
// Or with regex
if(/(text1)|(text2)/.test($('.taxclass').text())
{}
var txt = $('.taxclass').text();
if (txt.indexOf(tax1)>-1 || txt.indexOf(tax2)>-1) {}
非常に簡単な方法の1つは、$('。taxclass')。text()を複製しないことです。
次のようなものを試してください
var tax = $('.taxclass').text();
if (tax.indexOf(tax1)>-1 || tax.indexOf(tax2)>-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)
どうですか:
f = function (x) { return $('.taxclass').text().indexOf(x) > -1; }
if (f(tax1) || f(tax2)) {}