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

标签 jquery highlight diacritics non-ascii-characters

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

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

问题是,如果我搜索诸如“café”之类的内容,它不会突出显示任何单词。

如果我搜索“cafe”,即使我的结果同时包含“cafe”“café”,它也会>仅突出显示“咖啡馆”

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

这可能吗?

最佳答案

http://jsfiddle.net/nHGU6/

测试 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>

Test CSS:

.yellow {
    background-color: #ffff00;
}

Replacement 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 });
});

关于jquery - 在 jQuery 中突出显示带有(和不带有)重音字符/变音符号的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067344/

相关文章:

c - isLetter 在 C 中带有重音字符

java - 无法检索 urlencoded 变音符号。 [解决方案: use UTF8]

javascript - 这找到另一个 div 的父级并使用 jQuery 切换其子级

jquery - 将 "&html5=1" append 到 YouTube 上的视频网址? (jQuery)

从一台服务器添加 JQuery Sizzle 属性

objective-c - 有没有办法以编程方式突出显示状态栏项目?

android - 在 TextView 中显示德文字符

jquery 调用我的 helloworld Web 服务

javascript - 如何在不破坏标签的情况下突出显示 html 字符串中的文本?

emacs - 组织模式表格单元格字体化