繁体   English   中英

如何从模板创建DOM元素?

[英]How to create a DOM element from a template?

假设我有一个保存在HTML中并使用标准下划线语法的模板。

我的理解是,我可以使用jQuery这样抓模板:

var html = $('#item-foo').html()

从那里我可以使用

var interpolated = _.template(html, {prop: "and_values"});

要在JavaScript中创建DOM元素,我可以使用此实用程序功能

// converts HTML string to DOM object
Pub.HTMLToElement = function (html) {
    var div = document.createElement('div');
    div.innerHTML = html;
    return div.firstChild;
};

var element = HTMLToElement(interpolated);

最后,我在JavaScript中有了元素,这些元素都以HTML中的模板开头。

这是最好的方法吗?

似乎很长,所以我只想验证。

这有点简单,您已经在使用jQuery:

HTML:

<script id="template" type="text/template">
Hello <%=name%>, how are you?
</script>
<div id="container" />

JS:

var str=$('#template').html();
var interpolated = _.template(str, {name: "pizza"});
$('#container').append($('<div/>').html(interpolated));

JSFiddle: http : //jsfiddle.net/QAT4n/

如果您使用的是jQuery,则jQuery会自动将HTML转换为元素。 这是一种较短的方法:

var element = $(interpolated).get(0);

参见http://api.jquery.com/get/http://api.jquery.com/jQuery/#jQuery2


所以整个过程是这样的:

var html = $('#item-foo').html()
var interpolated = _.template(html, {prop: "and_values"});
var element = $(interpolated).get(0);

并可以清理为此:

var interpolated = _.template(
        $('#item-foo').html()
        , {
            prop: "and_values"
        });
var element = $(interpolated).get(0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM