在大量使用jQuery Tmpl迁移旧的Web界面后,我的一些模板已停止运行。进一步调查显示,不起作用的模板是以TR标记开头和结尾的模板(即表行被附加到现有表)。源文本刚刚被jQuery Tmpl脚本删除!如果我在更广泛的上下文中使用TR标签,例如包裹在表格中等等,一切正常,但只要它们在隔离模板中使用,它们就会被消灭。
工作示例:
<script id="workingTemplate" type="text/x-jQuery-tmpl" >
<table>
<tr><td>this works</td></tr>
</table>
</script>
不工作的例子:
<script id="notWorkingTemplate" type="text/x-jQuery-tmpl" >
<tr><td>this does not work</td></tr>
</script>
第一个示例在使用Firebug进行检查时呈现完整的HTML代码,后者呈现一个空的SCRIPT标记。
旧的和新的Web界面之间的区别可能与模板有任何关系,这是从jQuery 1.5.2到1.8.2的变化。我没有尝试运行1.7.2以下的任何东西,因为这是添加了.on()函数的地方,并且新框架广泛使用了这个方法。
除了最显而易见的(=改变模板框架到仍然维护的东西)之外,是否有解决此问题的方法?
编辑: 从字符串加载模板时,内容保持不变,
$.template( "tableRowTemplate",'<tr><td>this works</td></tr>');
$.tmpl("tableRowTemplate", data).appendTo('TABLE#mytable TBODY');
但遗憾的是我没有好处,因为我的模板比示例(服务器端动态等等)更复杂。它确实提供了一些提示。显然,jQuery Tmpl的初始化会删除内容,如果它不符合我未知的内容。也许是jQuery.fn.domManip?