私は最近この演習を行いました。<script>
タグのアプローチは少しハックなようですが、これを良い解決策として受け入れ、自分のバージョンを選択しました(John Resigsバージョンは明らかに本当に良いですが、自分の脳のバージョンでは簡単に理解できるものを選びました)。
私のバージョンは基本的なテンプレートであり、form
##VALUE##
テンプレート:(単一アイテムテンプレートまたは行テンプレート)
<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に挿入するときは、インラインスタイルのみが機能するようです。