这是我的html的正文:
<body>
<div>_good morning John... _welcomeText.</div>
<label> _welcomeText </label>
<a href="">_good</a>
</body>
这是我的jQuery:
var custom_obj = {};
custom_obj["_welcomeText"] = "Welcome in custom";
custom_obj["_good"] = "Good in custom";
$.each(custom_obj, function(key, value) {
$('body').text(function(index,text){
return text.replace(key,value);
});
});
此代码有效,但它只替换匹配模式的第一个实例。当我替换来自key
循环的动态值foreach
时,我无法使用/key/g
替换所有实例。请帮忙。
答案 0 :(得分:1)
我不推荐像这样的基于文本的操作
重要的是,这将是非常昂贵的
var custom_obj = {};
custom_obj["_welcomeText"] = "Welcome in custom";
custom_obj["_good"] = "Good in custom";
var $contents = $('body *').addBack().contents();
$.each(custom_obj, function (key, value) {
var regex = new RegExp(key, 'g');
$contents.each(function () {
if (this.nodeType == 3) {
this.nodeValue = this.nodeValue.replace(regex, value);
}
})
});
演示:Fiddle
答案 1 :(得分:0)
您应该使用此语法来创建正则表达式
var myRegex = new RegExp(key, 'g');