1

我想添加一个 div 的另一个副本,或者只是它的内容低于原始内容。使用 .clone() 它每次都会加倍。我想每次都添加一个相同的。想不通。有什么建议么。目前是代码。

$("#element").click(function(){

    var newElement = $("#element").clone();
    $("#element").append(newElement);

});
4

6 回答 6

0

您需要使元素为空(),然后append.

$("#element").click(function(){   
    var newElement = $("#element").clone();
    $("#element").empty();
    $("#element").append(newElement);

});

这里有 Empty() 和没有 Empty() 的区别

于 2013-08-28T10:38:59.157 回答
0

演示

试试这个代码...

 $("#element").click(function(){
    var newElement =$('<div/>').html($("#element").html());
    $("#element").after(newElement);
});
于 2013-08-28T10:45:47.343 回答
0

如果你不想让它翻倍,请使用

$("#element").html(newElement);
于 2013-08-28T10:54:34.030 回答
0

试试这个http://jsfiddle.net/73Hb4/1/

不是最干净的解决方案,但完成它。

基本上你在第一次添加操作之前克隆集合,然后重新使用它:

$(document).ready(function () {
    var elements;
    $("#someid").on('click', function(){
        if(!elements)
        elements = $("#someid").clone();

        $("#someid").append(elements.clone());
    })
});
于 2013-08-28T10:54:37.473 回答
0

这将在当前元素之后附加元素的副本

$("#element").click(function () {
    $(this).after($(this).html());
});
于 2013-08-28T11:00:16.013 回答
0

它每次克隆的原因是因为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)

  • 警报的替代品:log.debug 或 firebug
于 2013-08-28T11:41:13.643 回答