2

我有这个脚本在日语目录上运行,用于替换页面上的英文术语,以便为不可自定义的术语添加博客插件。它工作得很好,但它似乎只是在第一次看到它时才替换它。

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

4 回答 4

5

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

例如:

$(this).html($(this).html().replace(/Category List/g,'ブログテーマ一覧'));
于 2013-02-20T15:50:45.153 回答
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);
    })
})
于 2013-02-20T16:02:19.000 回答
1

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

于 2013-02-20T15:52:02.193 回答
1

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

$(this).html($(this).html().replace(/Category List/g,'ブログテーマ一覧'));
$(this).html($(this).html().replace(/Tag List/g,'タグ'));
于 2013-02-20T15:52:42.860 回答