如何在Prototype中从HTML创建元素?

时间:2012-07-18 23:05:50

标签: prototypejs handlebars.js

有没有办法在Prototype中用HTML创建元素,它类似于jQuery的$('<div>Foo</div>')

基本上我是从Handlebars模板创建HTML块并希望插入DOM但不想将其包装在其他元素中。

1 个答案:

答案 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();
};