1

jQueryに類似したPrototypeのHTMLから要素を作成する方法はあります$('<div>Foo</div>')か?

基本的に、HandlebarsテンプレートからHTMLチャンクを作成し、DOMに挿入したいが、他の要素でラップしたくない。

4

1 に答える 1

1

同じ問題を解決するために、最近のプロジェクトの1つで、この関数を「静的メソッド」としてMustacheに追加しました。これを解決するためにPrototypeに組み込まれているものはないと思います。テンプレートコードを保持するために非表示のテキストエリアを使用したため、$F()呼び出しが行われました。最後の3行は、問題に固有のものです。新しいdivを作成し、適用したテンプレートhtmlを挿入してから、最初の子孫を返します(この時点で要素として)。これは、テンプレートにルート要素が1つしかないことを前提としています。

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();
};
于 2012-07-19T15:45:28.993 に答える