jquery查找和替换文本,没有元素id

时间:2010-02-27 22:15:11

标签: jquery find replace

我正在寻找和替换文字。

我遇到的唯一问题是找到一个文本字符串,它没有附加到带有ID的元素。否则,这很容易。

我正在尝试这样的事情:

$("*").each(function () {
    $(this).html(this.html().replace('Original Text','New Text'));
});

工作不太好。
有没有人遇到过这个?

此外,如果我要查找和替换多个单词或短语,这会如何影响用户浏览器的速度/处理能力?这是记忆力吗?

5 个答案:

答案 0 :(得分:20)

$("*").contents().each(function() {
    if(this.nodeType == 3)
        this.nodeValue = this.nodeValue.replace("old", "new");
});

答案 1 :(得分:6)

Takpar,您的代码也适用。它似乎阻止了其他一些工作,但只有我动态拉动的项目。例如,当我使用.ajax()时。不知道为什么,但这就是我遇到的原因。我会测试更多。

在相关主题上,Gumbo的代码有效:

$("*").each(function () {
    if ($(this).children().length == 0) {
        $(this).text($(this).text().replace('Subject:','Name:'));
    }
});

我遇到的唯一问题是替换页面加载后加载的文本。

我确实有一些javascript函数正在显示来自服务器的数据,但只有在页面加载了所有元素之后才会显示。例如,用户从下拉列表中选择一个值,该值启动事件以从数据库加载产品列表。

我格式化了一些像这样的产品:

Granny Smith Apples
Price: x.xx per pound
Nutritional facts....

我只想找到替换“Price:”这个词,并可能将其替换为“Cost:”。

但正如我所提到的,该数据尚未加载。

我必须忍受限制吗?

答案 2 :(得分:4)

为什么不简单地使用:

$('body').html($('body').html().replace('Original Text','New Text'));

答案 3 :(得分:1)

您需要:contains()选择器。 http://api.jquery.com/contains-selector/

$("*:contains('Original Text')").each(...);

答案 4 :(得分:0)

$("*").each(function () { 
if ($(this).children().length == 0){ 
     $(this).html($(this).html().replace(/Old String/g, "New String"));
}});