我正在整理一个搜索功能,搜索页面上很多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.
我尝试了不同的搜索组合...比如将所有数据属性放入一个数组然后逐个搜索元素,但这需要时间来完成。
如果有人可以提供帮助,我将不胜感激?
答案 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()