【问题标题】:How to remove original element after it was cloned?克隆后如何删除原始元素?
【发布时间】:2013-09-15 04:01:16
【问题描述】:

HTML:

<div id="test">
    <p class="test1">test 1</p>
    <p class="test2">test 2</p>
    <p class="test3">test 3</p>
    <p class="test4">test 4</p>
</div>

<div class="clickdiv">click</div>

jQuery

$('.clickdiv').on('click', function(){
    $('.test1').clone().appendTo('#test');
}

这将产生一个&lt;p&gt;class = "test1"。现在我怎样才能删除原来的第一个?

【问题讨论】:

  • $('.test1').appendTo('#test');无需克隆

标签: jquery dom-manipulation


【解决方案1】:

我不知道为什么你不能只将元素附加到父元素,而不是克隆它然后删除它。

不管怎样

$('.test1').remove().clone().appendTo('#test');

演示:Fiddle

如果您想将与 test1 关联的数据和处理程序复制到克隆,则必须使用 @ra_htial 并稍作更改

$('.clickdiv').on('click', function () {
    var $el = $('.test1');
    $el.clone(true).appendTo('#test');
    $el.remove();
});

演示:Fiddle

【讨论】:

  • 当您再次单击时,这将不起作用。那就是克隆的元素没有类?
  • @C-Link 因为.test1 已经在父级的底部,所以 append 不会做任何事情
  • 您可以随时使用end()。它非常方便,但通常不使用。但是您绝对应该使用A. Wolff's 评论
  • 我尝试了这两种方法,但不是我的滑块在做什么,你也可以发布关于 end() 的信息。
  • 谢谢,只是不明白 clone() 在 remove() 之后是如何工作的,我认为它找不到任何可以克隆的东西,因为很明显,它已被删除?
【解决方案2】:
$('.clickdiv').on('click', function(){
    var test1 =$('.test1');
    test1.clone().appendTo('#test');
    test1.remove();
}

【讨论】:

  • test1 已经是一个 jQuery 对象,所以你不需要再次将它传递给 $()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多