有没有办法在Prototype中用HTML创建元素,它类似于jQuery的$('<div>Foo</div>')
?
基本上我是从Handlebars模板创建HTML块并希望插入DOM但不想将其包装在其他元素中。
答案 0 :(得分:1)
我将此函数作为'静态方法'添加到Mustache,用于我最近解决同一问题的项目之一。我不相信Prototype内置任何东西来解决这个问题。我使用隐藏的textareas来保存我的模板代码,因此$F()
调用。最后3行更具体到你的问题 - 创建一个新的div,插入你应用的模板html,然后返回第一个后代(作为一个元素,到此为止)。这假设您的模板只有一个根元素。
Mustache.createElementFromTemplateId = function(templateId, data) {
if (!this.cachedTemplates) this.cachedTemplates = {};
var templateStr = this.cachedTemplates[templateId];
if (!templateStr) {
templateStr = $F(templateId);
this.cachedTemplates[templateId] = templateStr;
}
var appliedTemplateStr = this.render(templateStr, data);
var div = new Element("div");
div.insert( appliedTemplateStr );
return div.firstDescendant();
};