我想添加一个 div 的另一个副本,或者只是它的内容低于原始内容。使用 .clone() 它每次都会加倍。我想每次都添加一个相同的。想不通。有什么建议么。目前是代码。
$("#element").click(function(){
var newElement = $("#element").clone();
$("#element").append(newElement);
});
我想添加一个 div 的另一个副本,或者只是它的内容低于原始内容。使用 .clone() 它每次都会加倍。我想每次都添加一个相同的。想不通。有什么建议么。目前是代码。
$("#element").click(function(){
var newElement = $("#element").clone();
$("#element").append(newElement);
});
您需要使元素为空(),然后append
.
$("#element").click(function(){
var newElement = $("#element").clone();
$("#element").empty();
$("#element").append(newElement);
});
试试这个代码...
$("#element").click(function(){
var newElement =$('<div/>').html($("#element").html());
$("#element").after(newElement);
});
如果你不想让它翻倍,请使用
$("#element").html(newElement);
试试这个http://jsfiddle.net/73Hb4/1/
不是最干净的解决方案,但完成它。
基本上你在第一次添加操作之前克隆集合,然后重新使用它:
$(document).ready(function () {
var elements;
$("#someid").on('click', function(){
if(!elements)
elements = $("#someid").clone();
$("#someid").append(elements.clone());
})
});
这将在当前元素之后附加元素的副本
$("#element").click(function () {
$(this).after($(this).html());
});
它每次克隆的原因是因为append包含了 div中的内容。所以你没有得到一个克隆的 div,而是在同一个 div 中克隆了内容,因此它加倍。
你真正需要的是after。您可以在 clone* 之后使用 alert(newElement.html()) 验证这一点。
因此,要在当前 div 之后实际克隆一个 div,您还需要整个 div 本身,因此除了已经提供的一些答案之外,我们可以使用 outerHTML 属性。
$("#element").click(function(){
var newElement = $(this.outerHTML);
$("#element:last").after(newElement);
});
如果您还需要单击处理程序来处理任何新的 div,则需要等效于 deprecated live:
$(document).on('click', '#element', function()
jsfiddle 演示 (Prabu 演示的变体,包括上述内容。有多个 id,我更喜欢使用类而不是演示中的 #id)