在jQuery中突出显示带有(和没有)重音字符/变音符号的单词

我正在使用jquery.highlight插件: http : //code.google.com/p/gce-empire/source/browse/trunk/jquery.highlight.js? r = 2

我用它来突出显示搜索结果。

问题是,如果我搜索“café”这样的东西,它就不会突出显示任何单词。

如果我搜索“咖啡馆” ,即使我的结果包含“咖啡馆”“咖啡馆” ,它也只会突出“咖啡馆”

所以,我需要突出显示所有单词的“版本”,无论是否有变音符号。

那可能吗?

http://jsfiddle.net/nHGU6/

测试HTML:

 

咖啡馆

ASDF

咖啡


>

咖啡馆

ASDF

咖啡

测试CSS:

 。黄色 {
     background-color:#ffff00;
 }

替换Javascript:

jQuery.fn.highlight = function (words, options) { var accentedForms = { 'c': 'ç', 'e': 'é' }; var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false, accentInsensitive: false }; jQuery.extend(settings, options); if (settings.accentInsensitive) { for (var s in accentedForms) { words = words.replace(s, '[' + s + accentedForms[s] + ']'); } } if (words.constructor === String) { words = [words]; } var flag = settings.caseSensitive ? "" : "i"; var pattern = "(" + words.join("|") + ")"; if (settings.wordsOnly) { pattern = "\\b" + pattern + "\\b"; } var re = new RegExp(pattern, flag); return this.each(function () { jQuery.highlight(this, re, settings.element, settings.className); }); }; 

测试代码:

 $(document).ready(function() { $("#wrapper-accent-sensitive").highlight("cafe", { className: 'yellow' }); $("#wrapper-not-accent-sensitive").highlight("cafe", { className: 'yellow', accentInsensitive: true }); }); 

我可以推荐一个支持开箱即用的好库: highlight.js 。 虽然它旨在为代码块进行语法突出显示,但您也可以通过定义相应的语言语法语法来突出显示其他(键)字。

设置lexemes : '[äöüÄÖÜßa-zA-Z]+'选项lexemes : '[äöüÄÖÜßa-zA-Z]+'在您的语言规范中, lexemes : '[äöüÄÖÜßa-zA-Z]+'将启用具有德语特殊字符的关键字。