【问题标题】:Cloning and appending a div克隆和附加一个 div
【发布时间】:2015-06-19 03:28:47
【问题描述】:

我正在尝试克隆一个 div 及其所有子元素,并在用户单击按钮并更改子元素的 id 时将克隆附加到原始元素的末尾,但由于某种原因我不能甚至让我的div 克隆和附加。

<div id="section">
    //bunch of textboxes, labels, etc.
</div>

这是我的按钮

<input type="button" value="Add New Section" id="addSection"/>

这是我的 Jquery

$(function() {
    var $section = $("#section").clone();  

    $( "#addSection" ).click(function() { 
        $section.append(); // I've tried this and appendTo, Insert, InstertAfter, After, etc.. still cannot get this to work.. 
    });
});

忽略这不会改变任何子元素id的事实,为什么不克隆和附加?

编辑

我想澄清一下,我正在尝试克隆我的 div 的原始状态并在每次单击我的按钮时附加它。

【问题讨论】:

  • 1) 使用appendTo() 2) 添加选择器作为参数。
  • 追加到什么?您需要指定选择器来附加元素。例如。 $('#section').append($section)
  • 我假设您希望克隆按钮重复工作,而不仅仅是一次。是吗?
  • @showdev 是的,它需要工作不止一次
  • 投反对票?

标签: jquery html


【解决方案1】:

假设您想在原始部分之后插入克隆部分,我们希望在click(而不是之前)上进行克隆,因此如果多次调用,这将起作用。 p>

然后我们替换id(我使用当前时间来使id唯一,你可以做其他事情),并将insertAfter()放在我们原始元素之后:

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

  var section = $("#section").clone();

  section.attr('id', 'section' + (new Date()).getTime());

  section.insertAfter( $('#section') );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="section">
  <p>bunch of textboxes, labels, etc.</p>
</div>

<input type="button" value="Add New Section" id="addSection" />

【讨论】:

  • 我需要用原始内容克隆它,这就是为什么我在点击之前运行克隆,但我需要我的按钮多次工作
【解决方案2】:

你需要在jQuery的append函数中传递内容。

前-

$('#YOUR_ELEMENT_ID').append('YOUR_CONTENT')

这里会是这样的,

$(function() {    
  var $section = $("#section").clone(); 
    $( "#addSection" ).click(function() { 
        var $sectionClone = $section.clone();
        $('#section').append($sectionClone); 
    });
});

工作演示HERE

【讨论】:

  • 我需要在点击之前克隆所有内容,所以这对我不起作用。
  • 您要克隆的内容。 ?一切都意味着什么?
  • 我认为 OP 的意思是他不希望 clone 内容被克隆 - 只是原始内容。使用您的代码,每次克隆附加的内容都会变长。
  • 哦..也许我一开始并不明白他到底想要什么。无论如何,我现在已经编辑了答案。谢谢:)
【解决方案3】:

试试这个:

$(function(){
  var $section = $("#section").clone();  

  $( "#addSection" ).click(function() { 
    $("#section").append($section);
  });
});

【讨论】:

  • 这只会克隆一次。此外,对您的解决方案的描述也会有所帮助。
  • @showdev 您是否测试了该声明?每次单击 plunker 上的按钮时,我都会附加它。
  • Yes, I did。提供一个可运行的 sn-p(或链接)您的工作版本可能会有所帮助。
【解决方案4】:

你需要指定一个选择器来追加元素。

$('#section').append($section)

或者

$section.appendTo('#section')

或者使用.after()在原始元素之后插入克隆的元素。

$('#section').after($section)

编辑 : 你需要在点击后克隆元素,让它每次都能工作。

如此集成的功能,

$(function(){
    $( "#addSection" ).click(function(){
        var $section = $("#section").clone();  
        $section.attr('id','someUniqueId');
        $('#section').after($section); 
    });
});

Demo

【讨论】:

  • 这只克隆和追加一次,我需要它多次工作
  • 我不认为它会在点击之前克隆你多次初始化克隆部分。
  • 好的,我如何克隆我的 div 及其原始内容,并在每次单击我的按钮时附加它?
  • @ShaunakD 我仍然遇到使用此解决方案克隆任何添加到 div 的内容的问题。
猜你喜欢
  • 1970-01-01
  • 2020-04-07
  • 2019-04-29
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多