2011-12-02 44 views
0

我有一個生成的table,它有太多的<td>元素。我叫jQuery刪除太多的html

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

刪除所有沒有在它的類名SlideInfo不必要<td>元素。問題是我有一個內部表(子),它也被刪除。我如何告訴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

我不會依賴jQuery來修復錯誤的HTML。爲什麼不解決根本問題呢? – Sparky

+0

@pb他們有我想要的課程。 – user516883

回答

2

使用孩子選擇「>」,這隻會看用於容器的直接子項中的匹配元素。試試這個

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

儘管我應該看看根本原因,但現在可以使用。謝謝! – user516883

1

我相信正確的選擇是這樣的

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

它僅選擇的#container的子元素。但是,如果#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」標籤。

否則,選擇器聲稱應該有一個「td」標記作爲任何被標記爲「#Container」的直接孩子。如果「#container」是「table」標籤上的id,我不確定選擇器是否正常工作。

「>」說「只選擇父母的孩子」。因此,不應選擇孫子女。這假定你的表有一個「容器」的ID。