【发布时间】:2014-03-13 15:33:47
【问题描述】:
我在一个项目中使用 jQuery 和 Mustache Js。
我在脚本标签中有模板。该模板需要一些基于一些数据的动态/可变 html。因此,我使用 jQuery 加载模板,对其进行操作,然后将其写回到脚本标签中。
但是,使用 jquery 将模板加载到 div 中(用于操作)似乎会改变模板的结构(它会四处移动),从而使模板无效。
如何动态更新模板并避免此问题? (任何帮助/指针/等)
原始模板
<table>
<thead>
<tr>
<td>FN</td>
<td>SN</td>
<td>OT</td>
</tr>
</thead>
<tbody>{{#Users}}
<tr class="tr-border" data-row-id="{{DCSID}}">
<td class="td-border">{{FN}}</td>
<td class="td-border">{{SN}}</td>
<td class="td-border">{{OT}}</td>
</tr>{{/Users}}</tbody>
</table>
使用 jquery 加载到另一个 div 会导致以下情况(将 {{#Users}} {{/Users}} 移出位置)
{{#Users}} {{/Users}}
<table>
<thead>
<tr>
<td>FN</td>
<td>SN</td>
<td>OT</td>
</tr>
</thead>
<tbody><tr class="tr-border" data-row-id="{{DCSID}}">
<td class="td-border">{{FN}}</td>
<td class="td-border">{{SN}}</td>
<td class="td-border">{{OT}}</td>
</tr></tbody>
</table
下面的代码是我的做法。这也是一个js小提琴link here
var $newDcsTemplate = $('<div/>').html($('#dcs-template').html()); // for manipulation
var original1 = $('#dcs-template').html()
var original2 = document.getElementById('dcs-template').innerHTML;
// manipulate the template here and replace content of script tag with it.
console.log(original1); // works fine
console.log(original2) // works fine
console.log($newDcsTemplate.html()) // messed up the template
【问题讨论】:
标签: javascript jquery html templates mustache