0

解决方案

var $tcMain = $(this).children().not('.tc-remove').clone()

问题

从 HTML 元素中,我们拉出一个 jQuery 对象,并希望删除其中包含该类.tc-remove的所有元素以进一步插入。

我们当前的代码:

HTML

<div class='tc'>
  <p> To be kept </p>
  <div class='tc-remove'> To be removed </div>
  <span> To also be kept </span>
</div>

jQuery

$('.tc').each(function(i,v){

  // Clone and strip redundant elements
  var $tcMain = $( $(this).clone().not('.tc-remove') )


  $create = $('<div>').append($tcMain.html())

})

我们希望 .html() 不是必需的!

4

3 回答 3

2

我认为解决方案比您预期的要简单得多:)

您有尚未在 DOM 中的节点,并且您想要过滤它们。将对象设置为过滤后的自身:

  $tcMain = $tcMain.not('.tc-remove');

现在,您将只添加没有 class 的元素.tc-remove

于 2013-08-01T21:23:56.013 回答
0

尝试这个:

$tcMain.remove('.tc-remove');
于 2013-08-01T21:14:23.067 回答
0

你需要使用filter而不是find

$tcMain.filter('.tc-tab-only').remove();

当您正在寻找与选择器处于同一级别而不是其后代的元素时。

而且你克隆元素的方式是错误的。应该是

var $tcMain = $($(this).clone());

代码

$('.tc').each(function (i, v) {

    var $tcMain = $($(this).clone());
    $tcMain.find('.tc-remove').remove();

    $('body').append($tcMain);

});

检查小提琴

于 2013-08-01T21:18:05.150 回答