2013-02-20 77 views
2

我已經在日文目錄上運行此腳本,正在努力在頁面上替換英文術語,以便爲不可自定義術語的博客加載項。它工作的很好,但它似乎只是在第一次看到它時才取代它。HTML替換腳本只替換第一個術語

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

例如你會看到查看帖子,標籤,二月仍爲英語底部的博客文章。

這裏的腳本:

$(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','タグ')); 
}) 
    }) 

我如何可以改變它,這樣它抓住術語隨處可見它看到了嗎?謝謝!

回答

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); 
    }) 
}) 
+0

你就在這裏,對DOM進行多次更新並不是最有效的方式。 – Lloyd 2013-02-20 16:07:18

+0

這是一個更好的方法來做到這一點? – 2013-02-20 16:16:10

+0

它肯定會導致更少的DOM流失,這取決於您擁有多少內容以及多久執行此操作可能會影響性能。 – 2013-02-20 16:21:16

5

你需要使用/g選項的正則表達式,否則string.replace()只會運行一次。

例如:

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

非常感謝!完美的作品! – 2013-02-20 16:00:32

1

據我所知,取而代之的是一個原生的JavaScript功能。爲了讓它代替每一次發生,你必須使用g搜索正則表達式,example/searchstring/g代替「searchstring」

+0

非常感謝!完美的作品! – 2013-02-20 16:15:17

1

嘗試添加一個全局修飾符到你的替換:

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

非常感謝!完美的作品! – 2013-02-20 16:00:16