8

jquery.highlightプラグインを使用しています:http ://code.google.com/p/gce-empire/source/browse/trunk/jquery.highlight.js?r = 2

検索結果を強調するために使用しています。

問題は、 「カフェ」のようなものを検索しても、単語が強調表示されないことです。

また、 「cafe」を検索すると、結果に「cafe」 cafe」の両方が含まれていても、 「cafe」のみが強調表示されます。

したがって、発音区別符号の有無にかかわらず、単語のすべての「バージョン」を強調表示する必要があります。

それは可能ですか?

4

2 に答える 2

4

http://jsfiddle.net/nHGU6/

HTMLのテスト:

<div id = "wrapper-accent-sensitive">
 <p>カフェ</p>
 <p> asdf </ p>
 <p>カフェ</p>
</ div>
<hr />
<div id = "wrapper-not-accent-sensitive">>
 <p>カフェ</p>
 <p> asdf </ p>
 <p>カフェ</p>
</ div>

CSSのテスト:

。黄色 {
    背景色:#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 });
});
于 2011-05-21T01:22:44.460 に答える
0

箱から出してこれをサポートする優れたライブラリをお勧めします:highlight.js。コードブロックの構文の強調表示を行うように設計されていますが、それに応じた言語の構文文法を定義することで、他の(キーワード)単語も同様に強調表示できます。

言語仕様でのオプションを設定するlexemes : '[äöüÄÖÜßa-zA-Z]+'と、たとえば、ドイツ語の特殊文字を含むキーワードが有効になります。

于 2018-09-27T12:43:49.050 に答える