搜索单词突出显示代码不正常

时间:2011-05-19 22:22:48

标签: javascript jquery

我使用了一段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);
        });   
    }); 

2 个答案:

答案 0 :(得分:4)

将字符串拆分为空格,然后将正则表达式构建为/(word1 | word2 | word3)/。

var pattern = new RegExp('('+$.unique(text.split(" ")).join("|")+')',"gi");

答案 1 :(得分:0)

将搜索字词分解为单词。

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
}