我正在编写一个使用jquery模板生成HTML页面的工具,但它不喜欢某些标签(DOCTYPE,html,head)。是否可以模拟这样的事情:
<script id="HtmlPageTemplate" type="text/x-jquery-tmpl">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>${PageTitle}</title>
<link rel="stylesheet" href="styles/style.css" type="text/css" media="all" />
<script src="scripts/script.js">{{html "</sc"+"ript>"}}
<script>
function MyFunction(){
}
{{html "</sc"+"ript>"}}
</head>
<body>
{{tmpl "#PageBody"}}
</body>
</html>
</script>
我正在使用{{html“&lt; / sc”+“ript&gt;”}}关闭脚本代码而不关闭模板脚本代码。
答案 0 :(得分:0)
我认为这对你有用:
基本思路是 - 替换'&lt;'所有带有特殊标记的敏感标签,例如'@#' 并将@#替换为'&lt;'。使用$ .template()编译模板。最后,渲染。
<script id="HtmlPageTemplate" type="text/x-jquery-tmpl">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>${PageTitle}</title>
<link rel="stylesheet" href="styles/style.css" type="text/css" media="all" />
@#script src="scripts/script.js">@#/script>
@#script>
alert('here');
@#/script>
</head>
<body>
{{tmpl "#PageBody"}}
</body>
</html>
</script>
<div id="output"></div>
使用
替换模板$.template('test', $('#HtmlPageTemplate').html().split('@#').join('<'));
$.tmpl('test', data).appendTo($("#output"));