2016-04-15 10 views
3

トップレベルの行を隠そうとするネストされたテーブルがあります。しかし、それはまた、ネストされたテーブル行の子を隠している。どのように最上位の行だけを隠すことができますか?あなたはこの文脈でchild selectorを使用する必要がテーブルtr:nth-​​childのみ親レベル

<table class='ms-formtable'> 
<tr></tr> 
<tr> 
     <table> 
     <tr></tr> 
     <tr></tr> 
     <tr></tr> // it is hide this row also 
     </table> 
</tr> 
<tr></tr> // just need to hide only this row 
<tr></tr> 
</table> 

コード

<script type="text/javascript"> 
$(document).ready(function() { 
    $("table[class='ms-formtable'] tr:nth-child(3)").hide(); 
}); 

答えて

3

$("table.ms-formtable > tbody > tr:nth-child(3)").hide(); 

あなたはdescendant selectorを使用しています。これにより、ネストされたtr要素が選択されます。また、クラスを持つ要素を対象としながらattribute equals selectorを使用する必要はありません。そこにクラスセレクタを使用するだけでよいのです。

tbodyをテーブルの直下の子として追加する必要があります。それが有効な構造です。それ以外の場合、HTMLは無効とみなされ、セレクタなしのセレクタはブラウザとして動作しません。

+0

セレクタに「」を追加することもできます。 [なぜブラウザがtbody要素をテーブル要素に挿入するのですか?](http://stackoverflow.com/questions/938083/why-do-browsers-insert-tbody-element-into-table-elements) – showdev

+0

@showdev良い点を参照してください。テーブルの即時の子はtbodyでなければなりません。それ以外の場合、HTMLは無効です。 –

関連する問題