我想用jQuery动态生成8个新段落:
http://jsfiddle.net/johnhoffman/Dfydn/
但是,这段jQuery只在我的div中添加了一个段落(其中包含文本"7“)。
var attached = $("<p>");
var sandbox = $("#sandbox");
for (var i = 0; i < 8; i++) {
// How come reseting attached works? attached = $("<p>");
attached.html(i).appendTo(sandbox);
}
HTML:<div id="sandbox"></div>
我不想为循环的每个迭代运行attached = $("<p>");
,因为我想利用prototype设计模式-我想构建一个段落,然后更改它的副本,以避免每次都必须从头开始构建。如何制作动态创建的元素的深度副本?
发布于 2012-04-16 04:41:20
你可以试试这个。使用.clone()
方法。当你使用.html()时,你也不需要克隆(I)。因为clone返回一个jQuery对象,所以您甚至不需要在它周围包装一个$()。
var attached = $("<p>");
var sandbox = $("#sandbox");
for (var i = 0; i < 8; i++) {
attached.clone().appendTo(sandbox);
}
另外,如果你想克隆事件处理程序,你应该使用.clone()。有关clone()
的更多信息,请参见http://api.jquery.com/clone/
发布于 2012-04-16 04:42:38
jQuery .clone()
方法正是针对making deep copies的。从文档中:
描述:创建匹配元素集的深层副本。
示例:
var attached = $("<p>");
var sandbox = $("#sandbox");
for (var i = 0; i < 8; i++) {
$(attached).clone().appendTo(sandbox);
}
发布于 2012-04-16 04:41:14
var attached = $("<p>");
var sandbox = $("#sandbox");
for (var i = 0; i < 8; i++) {
// How come reseting attached works? attached = $("<p>");
attached.clone().html(i).appendTo(sandbox);
}
https://stackoverflow.com/questions/10165860
复制相似问题