2

これが重複した質問である場合は、お詫び申し上げます。これは非常にユースケースの質問なので、誰もが独自のバージョンを持っているようです。

これを単純化できるかどうか疑問に思います。

if ($('.taxclass').text().indexOf(tax1)>-1 || $('.taxclass').text().indexOf(tax2)>-1) {}
4

6 に答える 6

4

現状では非常に単純ですが、主に要素のテキストを1回だけ取得し、変数を再利用することで、冗長性を少し減らすことができます。

var text = $('.taxclass').text();
if (text.indexOf(tax1)>-1 || text.indexOf(tax2)>-1) {

}

さらに注意すべきことは、識別子を使用し、クラスを持つすべての可能なものではなく、(ニーズに合っている場合は)個別の要素のみを探すことによって、DOMのトラバーサルを減らすことですtaxclass

于 2013-02-26T16:33:28.783 に答える
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())
{}
于 2013-02-26T16:32:52.460 に答える
3
var txt = $('.taxclass').text();
if (txt.indexOf(tax1)>-1 || txt.indexOf(tax2)>-1) {}
于 2013-02-26T16:33:36.047 に答える
3

非常に簡単な方法の1つは、$('。taxclass')。text()を複製しないことです。

次のようなものを試してください

var tax = $('.taxclass').text();
if (tax.indexOf(tax1)>-1 || tax.indexOf(tax2)>-1) {}
于 2013-02-26T16:33:58.730 に答える
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)
于 2013-02-26T16:37:07.660 に答える
0

どうですか:

f = function (x) { return $('.taxclass').text().indexOf(x) > -1; }
if (f(tax1) || f(tax2)) {}
于 2013-02-26T16:35:15.037 に答える