有没有办法在javascript中做一些类似ruby gsub的事情?我有一个本地html文件,我想要处理某些模板变量并将其替换为内容,但我不知道如何用新内容替换模板变量。html包含如下片段:
<div id="content">
<h1>{{title}}</h1>
{{content}}
</div>
现在,如果我将每个模板变量包装在一个命名的div中,那么我可以使用类似于jquery的replaceAll方法来用它的内容替换模板变量,但是如果不将每个变量都包装在div中,我就不知道如何做到这一点。
我只想做一些像$(‘document’).gsub(“{{title}”,"I am a title")这样的事情。
有谁有什么想法吗?
谢谢你的帮忙!
发布于 2011-10-31 17:26:11
您可以通过DOM元素的innerHTML
属性访问原始的HTML,或者使用包装它的JQuery的html
属性,然后执行替换:
var html = $(document).html();
$(document).html(html.replace('{{title}}', 'I am a title');
编辑:
正如Antti Haapala所指出的,替换整个文档HTML可能会产生您不想处理的副作用,比如重新加载脚本。因此,在执行替换之前,您应该向下钻取到最具体的DOM元素,即:
var element = $('#content');
var html = element.html();
element.html(html.replace('{{title}}', 'I am a title');
发布于 2013-03-31 11:53:33
如果其他人一般都在寻找与gsub等效的,那么这只会替换第一个匹配项:
"aa".replace("a", "b") // "ba"
//g
将替换所有匹配项:
"aa".replace(/a/g, "b") // "bb"
"aa".replace(new RegExp("a", "g"), "b"); // "bb"
发布于 2011-10-31 17:26:20
嗯,您可以使用带有正则表达式的String.replace,但实际上,您可以使用的是jQuery模板。
https://stackoverflow.com/questions/7951768
复制相似问题