San*_*ago 7 jquery highlight diacritics non-ascii-characters
我正在使用jquery.highlight插件:http://code.google.com/p/gce-empire/source/browse/trunk/jquery.highlight.js? r = 2
我用它来突出显示搜索结果.
问题是,如果我搜索"café"这样的东西,它就不会突出显示任何单词.
如果我搜索"咖啡馆",即使我的结果包含"咖啡馆"和"咖啡馆",它也只会突出"咖啡馆".
因此,我需要突出显示所有单词的"版本",无论是否有变音符号.
那可能吗?
测试 HTML:
\n\n\n<div id="wrapper-accent-sensitive">\n <p>咖啡馆</p>\n <p>asdf</p>\n <p>caf\xc3\xa9</p>\n </div>\n<hr />\n<div id="wrapper-not-accent-sensitive">>\n <p>咖啡馆</p>\n <p>asdf</p>\n < p>caf\xc3\xa9</p>\n</div>\n\n\n
测试CSS:
\n\n\n.yellow {\n 背景颜色: #ffff00;\n}\n\n\n替换 JavaScript:
\n\njQuery.fn.highlight = function (words, options) {\n var accentedForms = {\n \'c\': \'\xc3\xa7\',\n \'e\': \'\xc3\xa9\'\n };\n\n var settings = { className: \'highlight\', element: \'span\', caseSensitive: false, wordsOnly: false, accentInsensitive: false };\n jQuery.extend(settings, options);\n\n if (settings.accentInsensitive) {\n for (var s in accentedForms) {\n words = words.replace(s, \'[\' + s + accentedForms[s] + \']\');\n }\n }\n\n if (words.constructor === String) {\n words = [words];\n }\n\n var flag = settings.caseSensitive ? "" : "i";\n var pattern = "(" + words.join("|") + ")";\n if (settings.wordsOnly) {\n pattern = "\\\\b" + pattern + "\\\\b";\n }\n var re = new RegExp(pattern, flag);\n\n return this.each(function () {\n jQuery.highlight(this, re, settings.element, settings.className);\n });\n};\nRun Code Online (Sandbox Code Playgroud)\n\n测试代码:
\n\n$(document).ready(function() {\n $("#wrapper-accent-sensitive").highlight("cafe", { className: \'yellow\' });\n $("#wrapper-not-accent-sensitive").highlight("cafe", { className: \'yellow\', accentInsensitive: true });\n});\nRun Code Online (Sandbox Code Playgroud)\n