我最近做了这个练习,虽然<script>
标记方法看起来有点 hackish,但我接受了这个很好的解决方案并选择了我自己的版本(John Resigs 版本显然非常好,但我选择了我自己的易于理解的我自己的大脑版本)
我的版本是一个基本模板和替换使用可替换的值form
##VALUE##
TEMPLATE:(单项模板或行模板)
<script type="text/html" id="ItemTemplate">
<table>
<tr>
<td>##LABEL1##</td>
<td>##VALUE1##</td>
<tr>
</table>
</script>
内容构建功能:
function constructFromTemplate(content, values, appendTo) {
var modifiedHtml = content;
modifiedHtml = modifiedHtml.replace(new RegExp('__', 'g'), '##');
$.each(values, function (n, v) {
modifiedHtml = modifiedHtml.replace(new RegExp('##' + n + '##', 'g'), v);
});
if (appendTo != null)
{
$(appendTo).append(modifiedHtml);
//initializePageElements();
}
return modifiedHtml;
}
用法
内容将从函数返回和/或您可以将 appendTo 参数设置elementID
为自动append
内容。(设置null
为不append
)
可替换值只是作为动态对象添加,其中object
名称是可替换项。
var theContent = constructFromTemplate(ItemTemplate, { LABEL1: 'The Label 1 content', LABEL2: 'The Label 2 content' }, null);
注意:
我已经注释掉了//initializePageElements();
,这是用来初始化jQuery
模板上的插件、样式的。
将内容插入 DOM 时,似乎只有内联样式有效