如何解决搜索词突出显示代码无法正常工作
| 我用一块jQuery突出显示了搜索结果,它很好用,但是我想匹配所有单个单词,而不是我输入的整个短语,如果我搜索\“ lorem ipsum dolor \”,它会寻找匹配的短语,但我希望脚本突出显示所有单个单词而不是整个短语 这是我的jQuery代码 $(\"#main-search-input\").bind(\'keyup\',function(e){
var text = $.trim($(this).val());
if(text !== \'\' && text !== \' \'){
var pattern = new RegExp(text,\"gi\");
}
$(\'.sr-results a\').each(function(i){
var str = this;
var orgText = $(str).text();
orgText = orgText.replace(pattern,function($1){
return \"<b class=\'sr-highlight\'>\" + $1 + \"</b>\";
});
$(str).html(orgText);
});
});
解决方法
在空格上分割字符串,然后构建正则表达式,使其看起来类似于/(word1 | word2 | word3)/。
var pattern = new RegExp(\'(\'+$.unique(text.split(\" \")).join(\"|\")+\')\',\"gi\");
,将您的搜索词分解成单词。
var words = text.split(\' \');
确保没有重复项。
$.unique( words );
最后,您只需做自己已经在做的事情,而是循环进行
for ( var i = 0,len = words.length; i < len; i++ ) {
var word = words[i],pattern = new RegExp(word,\"gi\");
//and so on
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。