我正在使用jquery.highlight插件:http://code.google.com/p/gce-empire/source/browse/trunk/jquery.highlight.js?r=2
我正在使用它来突出显示搜索结果。
问题在于,如果我搜索“café”之类的内容,则不会突出显示任何字词。
如果我搜索“cafe”,即使我的搜索结果包含“cafe”& “café”,仅突出显示“咖啡馆”。
因此,无论是否有变音符号,我都需要突出显示所有单词的“版本”。
这可能吗?
答案 0 :(得分:4)
测试HTML:
<div id="wrapper-accent-sensitive"> <p>cafe</p> <p>asdf</p> <p>café</p> </div> <hr /> <div id="wrapper-not-accent-sensitive">> <p>cafe</p> <p>asdf</p> <p>café</p> </div>
测试CSS:
.yellow { 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 });
});
答案 1 :(得分:0)
我可以建议一个好的库来立即支持: highlight.js 。虽然它旨在对代码块进行语法高亮显示,但您也可以通过定义相应的语言语法来高亮显示其他(关键字)单词。
在您的语言规范中设置lexemes : '[äöüÄÖÜßa-zA-Z]+'
的选项将启用带有德语特殊字符的关键字。