テーブルの最初の行を選択しようとしています。注:最初の行はthead
タグでラップされているため、次のようになります。
_<table>
<thead>
<tr> <!-- first row --> </tr>
</thead>
<tbody>
<tr> <!-- body --> </tr>
</tbody>
<tfoot>
<tr> <!-- body --> </tr>
</tfoot>
</table>
_
'select first row' ヒントは、ラッパータグがない場合に機能する可能性があります。これは私が試したものですが、機能しません:
_ $("*:not(thead)", tableSelector).remove();
_
つまり、「not tfoot」セレクターを使用して、tbodyセレクターとtfootセレクターの両方を削除したいと思います。 _<thead>
_とeverything-inside-theadを除いて、テーブルから他のすべてを削除したいからです。つまり、基本的に私がやろうとしているのは、ヘッダーとその中身を除くすべてを選択することです。直感的には:not(thead *)
のようなものは機能しますが、機能しません。
私の回避策は$("tbody, tfoot", tableSelector).remove();
ですが、反対の(セレクターではない)使用方法を学び、理解したいと思います。
あなたの質問は正確には明確ではありません。単一のテーブルの最初の行を選択するには:
$("table tr:first")...
またはその逆:
$("table tr:not(:first)")...
それは実行されますが、テーブルが複数ある場合は機能しなくなります(テーブルが3つある場合でも、1つの行のみが選択されます)。あなたはそれを回避することができます:
$("table").each(function() {
$(this).find("tr:first")...
});
次の方法で、THEADにないすべての行を取得できます。
$("table > :not(thead) > tr")...
編集:あなたはこれを複雑にしすぎていると思います。 THEADとその内容以外のすべてを削除したい場合、それは比較的簡単です。
$("table > :not(thead)").remove();
TBODY要素とTFOOT要素をそのままにしておきたい場合は、次のように変更します。
$("table > :not(thead) > tr").remove();
テーブルセレクタで children() を使用すると、直接の子のみが選択されます。 notセレクターを使用してこれをフィルタリングできます。
$(tableSelector).children(':not(thead)').remove();
テーブルの最初の行を選択しようとしています。
古き良きDOMを使ってみませんか?
mytable.rows[0]
「:not」疑似セレクターは、パラメーターとして別のセレクターを受け取るため、これ以外のすべてを実際に削除できます。
$(':not(thead, thead *)', 'table').remove();
あなたは ここで実際にそれを見る することができます。
これは、 コメント で書いたものと非常に似ていますが、コンテキストを使用せず(テーブルノードを削除)、子オペランドを使用し、その中に「すべて」が含まれていなかった点が異なります。 theadですが、代わりに直接の子のみが含まれています。子オペランド ">"を削除すると、直接の子だけでなく、ノードのすべての子孫が除外されます。
子table
以外のthead
を削除する場合は、次のセレクターを試してください。
table > *:not(thead)
編集すでに変数にテーブルがあることを指摘したので:
$("> *:not(thead)", context)