6

次の構造のドキュメントがあります。

<div id="notice" class="box generalbox">
<p>
This is some text.
</p>
</div>

jQueryを使用して、「some」という単語を「My」という単語に置き換えたいと思います。

どうすればいいですか?

私は試した:

$("#notice").text().replace("some", "My");

しかし、それはうまくいきませんでした...

更新: ご返信いただきありがとうございます。私はこれを機能させるためにこのソリューションを使用しました:

$("#notice p").text($("#notice p").text().replace("some", "My"));
4

8 に答える 8

11

p内のタグをターゲットにする必要があります#notice:

$("#notice p").text(function(i, text) {
    return text.replace("some", "My");
});

2020年3月更新

これと同じロジックは、アロー関数を使用してさらに簡単にすることができます。

$('#notice p').text((i, t) => t.replace('some', 'My'));

これは、Internet Explorer 以外のすべてのブラウザーで機能します。

于 2013-10-11T13:06:07.593 に答える
0

サルマンの答えはうまくいきますが、段落に複数の単語がある場合、それは置き換えられません. 代わりにこれを使用してください:(グローバルに一致する正規表現を使用)

function replaceNodeText() {
    if (this.nodeType === 3) {
        this.nodeValue = this.nodeValue.replace(replaceNodeText.regex, replaceNodeText.replace);
    } else {
        $(this).contents().each(replaceNodeText);
    }
}
replaceNodeText.regex = /some/g;
replaceNodeText.replace = "my";
$("#notice").contents().each(replaceNodeText);

またはこれを使用します:

(.replace(x,y) を .split(x).join(y) に変更しました。これは replace() よりもはるかに高速です。こちらを参照してください)

function replaceNodeText() {
    if (this.nodeType === 3) {
        this.nodeValue = this.nodeValue.split(replaceNodeText.find).join(replaceNodeText.replace);
    } else {
        $(this).contents().each(replaceNodeText);
    }
}
replaceNodeText.find = "some";
replaceNodeText.replace = "my";
$("#notice").contents().each(replaceNodeText);

jsfiddle のデモ

于 2015-02-10T12:44:55.627 に答える