【发布时间】:2021-01-06 21:23:17
【问题描述】:
我有一个像这样的车把模板
<script type="text/html" id="some-id">
<div class="some-class-1" {{#if some_condition}}style="color:blue;"{{/if}}>
</div>
<div class="some-class-2">
<div class="some-nested-class-1">
</div>
</div>
<div class="some-class-3">
</div>
</script>
我想修改这个模板,例如在div.some-nested-class-1之后添加另一个div
我使用以下代码,将模板解析为 dom
jQuery(function ($) {
var t = $("#some-id");
var d = $("<div>").html(t.html());
console.log(d.html());
});
但它会更改{{#if}} 如下:
<div class="some-class-1" {{#if="" some_condition}}style="color:blue;" {{="" if}}="">
</div>
<div class="some-class-2">
<div class="some-nested-class-1">
</div>
</div>
<div class="some-class-3">
</div>
在这里使用 Chrome 和 jsfiddle https://jsfiddle.net/wv7hzx5a/
如何在不影响模板的情况下实现这一点?
非常感谢
PS:模板是在单独的脚本中编译的,我无权更改。我想修改模板,以便在其他脚本编译它时,将包含新元素。
【问题讨论】:
-
我认为您希望您的目标
<div>像源代码一样成为<script>,因此浏览器不会像 HTML 那样解析内容。 jsfiddle.net/L0p1thwo/16 -
我认为您将很难尝试使用 jQuery 的
.html来尝试获取原始 Handlebars 模板,因为该模板不是有效的 HTML。使用 jQuery 的.text将允许您获取模板的字符串值,但接下来的挑战将是如何插入额外的模板语法。我认为您应该避免修改模板。我认为您应该对通过调用模板(即模板函数的输出)生成的 HTML 进行插入/附加,而不是尝试修改模板。
标签: javascript jquery handlebars.js