HTML替换脚本仅替换第一个术语

时间:2013-02-20 15:49:09

标签: jquery replace

我在日语目录上运行此脚本,用于替换页面上的英语术语,以获取不可自定义的术语的Blog插件。它工作得很好,但它似乎只是在第一次看到它时取代了这个术语。

http://www.martyregan.com/jp/blog/

例如,你会看到View Post,Tags,Feb在底部博客文章中仍然是英文。

这是脚本:

$(document).ready(function(){
            $('#pb_sidebar, #left-sidebar-inner, #pb_body, #main-content-inner, #sidebar-archives').each(function(i){
$(this).html($(this).html().replace('Category List','ブログテーマ一覧'));
$(this).html($(this).html().replace('Tag List','タグ'));
})
    })

如何更改它以便它能够在任何地方抓住它?谢谢!

4 个答案:

答案 0 :(得分:5)

您需要使用带有/g选项的正则表达式,否则string.replace()只会运行一次。

例如:

$(this).html($(this).html().replace(/Category List/g,'ブログテーマ一覧'));

答案 1 :(得分:3)

顺便说一下,你真的用这种方法来攻击DOM。

考虑缓存.html()结果,然后首先运行替换,然后再将新文本放回DOM中:

$(document).ready(function(){
    $('#pb_sidebar, #left-sidebar-inner, #pb_body, #main-content-inner, #sidebar-archives').each(function(i){
        var mycontent = $(this).html();
        mycontent = mycontent.replace(/Category List/g,'ブログテーマ一覧');
        mycontent = mycontent.replace(/Tag List/g,'タグ');
        $(this).html(mycontent);
    })
})

答案 2 :(得分:1)

据我所知,replace是一个原生的JavaScript函数。为了让它替换每次出现,你必须使用你正在搜索的RegEx的g参数,例如/ searchstring / g而不是“searchstring”

答案 3 :(得分:1)

尝试为替换添加全局修饰符:

$(this).html($(this).html().replace(/Category List/g,'ブログテーマ一覧'));
$(this).html($(this).html().replace(/Tag List/g,'タグ'));