0

ページ上の多くの div で複数のデータ属性を検索する検索機能をまとめています。以下は、私がこれのために働いているコードです。私が遭遇した私の問題は、最後の単語を除く各データ属性の最初の単語のみを検索するように見えることです。

var filter = $(this).val();
var regExPattern = "gi";
var regEx = new RegExp(filter, regExPattern);   
$(".box").each(function(){
   if (
      $(this).data('attr1').search(regEx) && 
      $(this).data('attr2').search(regEx) &&
      $(this).data('attr3').search(regEx) &&
      $(this).data('attr4').search(regEx) < 0
   )
   {
      //Do Something
   } 
   else 
   {
      //Do Something else
   }         
});

この問題を再現するフィドルをここにまとめました。

すべてのデータ属性を配列に入れてから要素を 1 つずつ検索するなど、検索のさまざまな組み合わせを試しましたが、完了するまでに時間がかかります。

誰かがこれを手伝ってくれれば幸いです。

4

1 に答える 1

1

あなたの状態は混乱しています。.search()一致のインデックスまたは を返します-10そのため、文字列の先頭に正規表現が見つかった場合にのみ偽の値 ( ) が生成され、それ以外の場合は真の値が生成されます。だからそれを

  $(this).data('attr1').search(regEx) < 0 && 
  $(this).data('attr2').search(regEx) < 0 &&
  $(this).data('attr3').search(regEx) < 0 &&
  $(this).data('attr4').search(regEx) < 0

または、位置が必要ないため、に切り替えますregEx.test()

于 2013-02-07T19:30:31.557 に答える