Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从模板元素创建元素?_Jquery - Fatal编程技术网

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>