Jquery 从模板元素创建元素?
我在这方面遇到了一些问题:Jquery 从模板元素创建元素?,jquery,Jquery,我在这方面遇到了一些问题: template = $("#template"); $(template).attr("id", "newid"); $(template).appendTo("body"); 我要做的是为模板分配一个id,然后修改内容。问题是,我现在指的是实际的模板元素,所以id正在改变它。再次使用此模板时,我无法选择,因为id不同 有关于最佳方法的建议吗?克隆对象: template = $("#template").clone(); template.attr("id",
template = $("#template");
$(template).attr("id", "newid");
$(template).appendTo("body");
我要做的是为模板分配一个id,然后修改内容。问题是,我现在指的是实际的模板元素,所以id正在改变它。再次使用此模板时,我无法选择,因为id不同
有关于最佳方法的建议吗?克隆对象:
template = $("#template").clone();
template.attr("id","newid");
template.appendTo("body");
您可以像这样使用克隆方法:
template = $('#template').clone();
template.attr('id', 'newid');
template.appendTo('body');
查看以了解更多信息。三行解决方案可以工作,但我建议使用一行jQuery风格的简短解决方案:
$('#template').clone().attr('id', 'newid').appendTo('body');
关于您的代码还有三个注释: 您应该使用var 将jQuery对象分配给变量后,不应再这样做。 因此,您的代码将如下所示:
var $template = $("#template").clone();
$template.attr("id", "newid");
$template.appendTo("body");
HTML5提供了一个模板元素:
HTML部分:
<html>
<body>
<template id='template'>
</template>
</body>
</html>
克隆方法不足。对于我来说,克隆无法使用。最好的答案是Manuel的答案,但为了从模板生成JQuery对象而不添加元素,我使用了以下一行代码:
var template = $($("#template").html());
使用此html
<html>
<body>
<template id='template'>
</template>
</body>
</html>
不完全确定你的意思是什么?如果要从另一个元素创建元素,可能需要使用jQuery的clone方法。模板已经是jQuery对象。不要再把它传给jQuery了,太好了!不幸的是,我在克隆和附加之间对模板进行了重大更改。因为创建jQuery对象需要大量的工作,所以您可以查看jQuery源代码,如果已经这样做并将结果存储在变量中,为什么还要再做一次?即使没有那么多的工作,即使只是缓存读取,简单地引用已经存储的变量总是比其他任何东西都快。但是它会创建一个类型为“template”的新节点。我只是想要它的身体。我想曼纽尔的版本正是你想要的。我也不明白为什么需要克隆模板,但不需要克隆其内容。
<html>
<body>
<template id='template'>
</template>
</body>
</html>