搜索多个数据属性

时间:2013-02-07 19:20:52

标签: javascript jquery regex search custom-data-attribute

我正在整理一个搜索功能,搜索页面上很多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
   }         
});

我整理了fiddle that replicates this problem here.

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

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

1 个答案:

答案 0 :(得分: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()