2011-12-02 19 views
0

<td>要素が多すぎるtableが生成されました。私はそれにクラス名SlideInfoを持っていない不要な<td>のすべての要素を削除するjQueryがあまりにも多くのhtmlを取り除く

$('#Container td[class!="SlideInfo"]').remove(); 

を呼び出します。問題は、私も内部テーブル(子)が削除されていることです。どうすればjQueryに、内側のものではなく、<td>の兄弟だけを削除するように指定することもできます。

<table> 
<tr> 
<td class="SlideInfo"> 
    <table> 
     <td class="SlideInfo"> 
      This gets removed, I know the html is wrong on this but this is an example. 
     </td> 
    </table> 
</td> 

<td class="SlideInfo"> 
    <table> 
     <td class="SlideInfo"> 
      This gets removed, I know the html is wrong on this but this is an example. 
     </td> 
    </table> 
</td> 
</tr> 
</table> 

オフ

開始は私が$('#Container td[class!="SlideInfo"]').remove();を呼び出し、それは、これらの不要なtd削除年代に、それはまた、子供td削除 'は私が欲しいんものの秒。

+0

削除したいものと削除したくないものを区別しますか? –

+1

私は、悪いHTMLを修正するためにjQueryに依存しません。代わりにルートの問題を解決してみませんか? – Sparky

+0

@pb彼らは私が欲しいもののクラスを持っています。 – user516883

答えて

2

を「>」のみになりますましたコンテナの直下の子の間で一致する要素のために。お試しください

$('#Container > td[class!="SlideInfo"]').remove(); 
+0

根本的な原因を見ても、今のところうまくいくはずです。ありがとう! – user516883

1

私は正しい選択はそれが#Containerの唯一の子要素を選択し、この

$('#Container>td[class!="SlideInfo"]').remove(); 

であると考えています。 #Containerが実際にtable要素はないtrある場合は、あなたがこのようなものが必要な場合があり:子セレクタを使用し

$('#Container>tr>td[class!="SlideInfo"]').remove(); 

またはこの

$('#Container>tbody>tr>td[class!="SlideInfo"]').remove(); 
+0

私はジョセフの答えを投票しました。 "tr"タグと可能な "tbody"タグの両方を考慮に入れます – jmbertucci

0

「子セレクタ」をお試しください。

$('#Container > tr > td[class!="SlideInfo"]').remove(); 

大なり記号がセレクタに表示されています。また、大なり記号の前に "tr"タグを使用するようにしてください。

それ以外の場合、セレクタは "#Container"としてマークされているものの直接の子として "td"タグが必要であると主張しています。 "#container"が "table"タグのIDである場合、セレクタが正しく動作するかどうかはわかりません。

「>」は「親の子のみを選択する」と表示されます。したがって、孫を選択すべきではない。これはあなたのテーブルが "コンテナ"のIDを持っていることを前提としています。

関連する問題