我遇到了一个我无法进一步思考的问题。简而言之,我有一个ul
数百个li
,每个li
都有几十个单词作为文本;在列表的最顶部,我放置了一个输入框,供用户输入一些关键字;例如,假设我想从那个巨大的列表中只过滤掉同一行中存在以下三个单词的行:“ red sweet strawberries ”。点击搜索按钮后,这些行被过滤掉了,我只有两行包含我感兴趣的单词。
li1:“我迫不及待地想吃点红甜草莓”
li2:“现在是夏天,红甜的草莓现在很新鲜”
到此为止,一切都很好。
当三个查找的单词被字符串中的其他单词或字符分隔时,就会出现问题。因此,以上面的示例为例,过滤器永远不会向我显示以下行:
li3:“又红又甜的草莓已经上市了”
因此,在这里我列出了过滤和整理上例结果的整个函数:
$(document).ready(function() {
var links = new Array();
$("h4").each(function(index, element) {
links.push({
text: $(this).text(),
element: element
});
});
$("#searchbutton").click(function() {
var query = $("#inputtext").val();
var querywords = query.split(',');
var results = new Array();
for(var i = 0; i < querywords.length; i++) {
for(var j = 0; j < links.length; j++) {
if (links[j].text.toLowerCase().indexOf(querywords[i].toLowerCase()) > -1) {
results.push(links[j].element);
}
}
}
$("h4").each(function(index, element) {
this.style.display = 'none';
});
for(var i = 0; i < results.length; i++) {
results[i].style.display = 'block';
}
});
});
是否可以搜索多个子字符串并获得结果,即使子字符串由字符或其他单词分隔?