2012-06-08 18 views
1

我有一個需要被翻譯爲每個語言jQuery的查找和替換多個項目

像這樣每月表(顯然不工作)

$('.lang-en #monthly th').each(function() { 
    var text = $(this).text(); 
    $(this).text(text.replace('Tam', 'Jan')); 
    $(this).text(text.replace('Hel', 'Feb')); 
    $(this).text(text.replace('Maa', 'Mar')); 
    $(this).text(text.replace('Huh', 'Apr')); 
    $(this).text(text.replace('Tou', 'May')); 
    $(this).text(text.replace('Kes', 'Jun')); 
    $(this).text(text.replace('Hei', 'Jul')); 
    $(this).text(text.replace('Elo', 'Aug')); 
    $(this).text(text.replace('Syy', 'Sep')); 
    $(this).text(text.replace('Lok', 'Oct')); 
    $(this).text(text.replace('Mar', 'Nov')); 
    $(this).text(text.replace('Jou', 'Dec')); 
    $(this).text(text.replace('Yht', 'Total')); 

}); 
+0

看起來很好,你是不是明顯的意思是'顯然不工作? – Sarfraz

+0

你說「顯然不工作」,怎麼樣?爲什麼這不工作?這段代碼片段有什麼意義? –

+0

作爲@client的附註,考慮緩存'$(this)',這是最好的做法。 –

回答

2

可以保持原有之間的映射替換字符串,並通過一個函數來text()

var mapping = { 
    "Tam": "Jan", 
    "Hel": "Feb", 
    // ...and so on... 
}; 

$("#monthly th").text(function(index, originalText) { 
    return mapping[originalText]; 
}); 

編輯:如果你想重新只能放置部分文本,可以使用嵌套數組而不是對象:

var mapping = [ 
    ["Tam", "Jan"], 
    ["Hel", "Feb"], 
    // ...and so on... 
]; 

$("#monthly th").text(function(index, originalText) { 
    var pattern = mapping[index]; 
    return originalText.replace(pattern[0], pattern[1]); 
}); 
+0

也許他在'th'有另一個文本,例如'Tou:'或'Huh:ssa'。 – VisioN

+0

@VisioN,好點。我會相應地更新我的答案。謝謝:) –

+0

謝謝弗雷德裏克 – client