0

jQueryで、以下を書きました:

$(document).ready(function() {

    var wordlist = new Array();
    wordlist['BioResource'] = 'Bio Resource is a lorem';

    var array_length = wordlist.length;

    for(var key in wordlist) {
        $("p").html(function(index, value) {

            return value.replace(new RegExp("\b(" + key + ")\b", "gi"), '<a href="#" class="test" title="'+wordlist[key]+'">$1</a>');

        });
    }

});

wordlist配列をループし、キーごとに、段落タグでその単語を見つけてそれ自体に置き換えようとしますが、配列の適切な値のタイトルタグでアンカーにラップする必要があります(しかしループしません)。その鍵。

私は何を間違っていますか?

これから配列の側面を削除し、次のようにキーと値を直接入力すると、正規表現自体が機能します。

return value.replace(/\b(BioResource)\b/gi, '<a href="#" class="test" title="'+wordlist['BioResource']+'">$1</a>');

よろしくお願いします。

ポール

4

2 に答える 2

3

これを変える:

"\b(" + key + ")\b"

これに:

"\\b(" + key + ")\\b"

\b文字列リテラルの in は、バックスペース文字を表します。特別な意味はありませんが\、文字列で指定するにはエスケープする必要があります: \\. そうし\ないと、気化するか、構文エラーがスローされます。

于 2013-02-07T13:32:34.223 に答える
0

あなたはそれを好転させて、あなたが見つけることができるどんな単語でも置き換えることができました。このように、実際の置換を実行するために、各段落テキストを1回だけ繰り返します。

(\w+)このソリューションは、コンテンツがオブジェクト内で一致するかどうかを使用して確認し、各段落内のすべての単語を検索しwordlistます。見つかった場合は置き換えになりますが、そうでない場合は、その単語はそのままになります。

$('p').html(function(index, old) {
  return old.replace(/(\w+)/g, function($0, $1) {
        return wordlist[$1] || $0;
    });
});
于 2013-02-07T13:53:12.110 に答える