2011-05-22 63 views
1

我在这里做的是将一些HTML添加为HTML到我的clipboard。 但是,我想要从我的clipboard中删除最后添加的元素/项目。我如何删除以前的附加项目

我怎样才能做到这一点,是这个脚本的最最小标准化方式下?

$(document).ready(function(){ 
    $('button:not("#delete")').click(function(e){ 
     $('#clipboard').append($(this).prev('div.images').html() 
       .replace(/\</ig, '&lt;') 
       .replace(/\>/ig, '&gt;')); 
    }); 

    $('#delete').click(function(e){ 
     $('#clipboard').html(' '); 

    }); 
    }); 

我已经找到了这个问题的答案,但如果写这更最小的,干净,请作出任何建议的另一种方式。感谢

回答

2
$('#delete').click(function(e) { 
    $('#clipboard').html(' '); 
}); 

你清空整个剪贴板。

你想要做的,而不是什么是$("#clipboard").children().last().remove();

你也使用.append而不是增加一个DOM节点添加HTML到您的股利。

var div = $("<div></div>"); 
div.append($(this).prev('div.images').html().replace(/\</ig, '&lt;').replace(/\>/ig, '&gt;')) 
$('#clipboard').append(div); 

如果添加DOM节点,则可以删除该节点。如果你想内联元素,然后用var span = $("<span></span>")

Live Example

+0

@Raynos我用你提供的以下内容替换了'$('#clipboard')。html('');'但它没有做任何事情。 – breezy 2011-05-22 16:21:59

+0

@SirB更新。您需要附加一个DOM节点,而不是HTML文本。 – Raynos 2011-05-22 16:30:28

+0

你先生是个天才!所以,我想说的是,将我的元素包装在一个'div'中,用html实体替换'< >',并将它们追加到我的'#剪贴板'中,你能简单地解释'console'部分,所以我可以理解我'完成。谢谢@Raynos – breezy 2011-05-22 16:38:46

2
$('#clipboard').children().last().remove() 

应该这样做

+0

这并不做.. @Peter里昂 – breezy 2011-05-22 16:27:23

+0

感谢您的建议。 – breezy 2011-05-22 16:53:29

1

更换var div = $("<div></div>")这里是我的解决方案: 希望这将有助于...某人:d

JSFiddle DEMO

$('#copy').click(function(e) { 
    $('.images').clone().appendTo('#clipboard').removeClass('images'); 
}); 

$('#delete').live('click', function(e) { 
    $('#clipboard').html(''); 
}); 

并从剪贴板中删除'最后一项':

JSFiddle DEMO 2

+0

我很肯定这会帮助有人在将来遇到这个问题。但是这会删除'剪贴板'中的所有项目。我想删除附加到剪贴板的前一个项目。 – breezy 2011-05-22 16:54:37

+0

@SirB我也添加了这个:在我的答案中看到添加的演示! :) – 2011-05-22 17:00:28