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
   }         
});

我整理了一个在这里复制这个问题的小提琴。

我尝试了不同的搜索组合......例如将所有数据属性放入一个数组中,然后逐个搜索元素,但这需要时间才能完成。

如果有人可以提供帮助,我将不胜感激?

4

1 回答 1

1

你的情况令人困惑。.search()返回匹配或的索引-1。因此,0仅当在字符串的开头找到正则表达式时,它才会产生一个假值 ( ),否则会产生一个真值。所以改成

  $(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 回答