1

使用模板:

<div id="temp" style="display:none;">
    <h3>{title}</h3>
    <p>{body}</p>
</div>

和脚本(jquery 版本):

var html = $('#temp').html();
var vals = {"title":"Hello","body":"Good bye!"};
html = html.replace(/{(.+?)}/g, vals["$1"]); // this works if replaced with code below

我的替代品未定义

下面的代码有效,但似乎它应该与上面尝试的一行一起工作

matches = html.match(/{(.+?)}/g);  
for(m=0;m<matches.length;m++){
    var match=matches[m].replace("{","").replace("}", "");
    html = html.replace(matches[m],vals[match])
}

这可以根据需要简化吗?

这对于模板引擎来说太简单了,所以不需要去那里。

4

1 回答 1

2

你可以使用回调作为第二个参数String.replace()

var result = html.replace(/{(.+?)}/g, function(c, m) { return vals[m]; });
于 2013-01-21T17:25:53.737 回答