从模板元素创建元素?

时间:2011-07-09 18:20:23

标签: jquery

我遇到了一些麻烦:

template = $("#template");
$(template).attr("id", "newid");

$(template).appendTo("body");

我想要做的是为模板分配一个id,然后修改内容。麻烦的是,我目前指的是实际的模板元素,因此id正在改变它。再次使用此模板时,由于ID不同,我无法选择。

关于最佳方法的任何建议?

6 个答案:

答案 0 :(得分:21)

克隆对象:

template = $("#template").clone();
template.attr("id","newid");
template.appendTo("body");

答案 1 :(得分:10)

您的代码还有三个注释:

所以你的代码看起来像是:

var $template = $("#template").clone();
$template.attr("id", "newid");

$template.appendTo("body");

答案 2 :(得分:10)

HTML5提供了template元素:

contents = $('#template').html();
copy = $('<div id="copy"></div>');
$('body').append(copy.append(contents));

HTML部分:

<html>
  <body>
    <template id='template'>
    </template>
  </body>
</html>

clone方法还不够。

答案 3 :(得分:2)

您可以像这样使用clone()方法:

template = $('#template').clone();
template.attr('id', 'newid');
template.appendTo('body');

请查看http://api.jquery.com/clone/以获取更多信息。

答案 4 :(得分:1)

3行解决方案可行,但我建议使用1行短jQuery样式解决方案:

$('#template').clone().attr('id', 'newid').appendTo('body');

答案 5 :(得分:1)

对我来说clone()<template>不兼容。最好的答案是来自Manuel的答案,但是为了从模板生成JQuery对象而不添加他的元素,我使用了这种单行代码:

var template = $($("#template").html());

使用此html

<html>
 <body>
  <template id='template'>
  </template>
 </body>
</html>