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 に答える