0

下面是我的代码(不要担心“关闭”,它是基于用户点击位置的偏移量)。在第二行中,我试图克隆一个现有的 div,然后显示克隆的副本?但它不起作用。但是,如果我删除 clone() 那么代码确实可以工作,但当然它只是显示了现有的 div 这不是我需要的。

var off = $(this).offset();
var div = $('#testtt').clone();
div.css({ position: "absolute", top: off.top, left: off.left });
div.show();

有小费吗?

4

7 回答 7

2

您正在克隆 div ,但没有将其插入 DOM 中的任何位置。

所以在你这样做之前它是不存在的

var off = $(this).offset();
var div = $('#testtt').clone();
div.css({ position: "absolute", top: off.top, left: off.left });

$('body').append(div);   <-- Appending to body here.. You can append anywhere you want
于 2012-10-15T15:52:41.263 回答
2

您需要将 div 附加到您的页面。目前,您刚刚创建了对克隆的引用,但没有显示它。

$("body").append(div);

于 2012-10-15T15:55:01.993 回答
1

您必须在 html 中的某处附加克隆的 div。例如:

var off = $(this).offset();
var div = $('#testtt').clone();
div.css({ position: "absolute", top: off.top, left: off.left });

// append to parent of "this"
var parent = $(this).parent();
div.appendTo(parent);

// should be unnecessary, except if the style is display:none
//div.show();
于 2012-10-15T15:55:53.333 回答
0

append()您需要使用or将其附加到另一个元素appendTo()

于 2012-10-15T15:53:34.997 回答
0

可能是重复ID的问题

API 页面

注意:使用 .clone() 具有产生具有重复 id 属性的元素的副作用,这些属性应该是唯一的。在可能的情况下,建议避免使用此属性克隆元素或使用类属性作为标识符。

克隆后,尝试更改克隆元素的 id:

div.attr('id').val('#testtt')
于 2012-10-15T15:53:35.533 回答
0

根据@andrewWhitaker 的评论,您需要将新元素添加到 DOM。例如

div.attr('id').val( div.attr('id')+"_cloned" );
$("#my_container_element_id").append(div);

您还可以删除

div.show();
于 2012-10-15T15:53:38.933 回答
0

在jQuery中

$('.addRow').click(function(){
var off = $(this).offset();
var div = $('#testtt').clone();
div.css({ position: "absolute", top: off.top, left: off.left });
div.show();
div.appendTo($("#testtt");

})

于 2012-10-15T15:56:37.660 回答